لقد تم تكليفك بتنفيذ نظام عرض الرسم البياني للمشهد ثنائي الأبعاد باستخدام إطار عمل Shipyard وWebGl2Renderer في Rust. سيتم عرض الرسم البياني للمشهد على عنصر قماش HTML.

الرسم البياني للمشهد هو هيكل هرمي يمثل مشهدًا ثنائي الأبعاد أو ثلاثي الأبعاد. يمكن أن تحتوي كل عقدة في الرسم البياني للمشهد على تحويلات، مثل الترجمة والتدوير والقياس، بالإضافة إلى خصائص مرئية، مثل اللون أو الملمس. يمكن أن تحتوي العقد أيضًا على عقد فرعية، مما يشكل علاقة بين الوالدين والطفل.

لقد تم تزويدك بمقتطف التعليمات البرمجية الذي يستورد التبعيات المطلوبة ويقوم بإعداد السياق الأولي لنظام عرض الرسم البياني للمشهد.

مهمتك هي إكمال التنفيذ عن طريق كتابة التعليمات البرمجية اللازمة لإنشاء رسم بياني للمشهد ثنائي الأبعاد وعرضه على عنصر قماش HTML.

اكتب دالة `render_scene_graph` تأخذ `HtmlCanvasElement` كمعلمة وتقوم بإعداد المكونات والأنظمة اللازمة لعرض رسم بياني للمشهد ثنائي الأبعاد على اللوحة القماشية. يجب أن ترجع الدالة نتيجة تشير إلى ما إذا كان العرض ناجحًا أم لا.

استخدم الإرشادات التالية لتنفيذ وظيفة `render_scene_graph`:

1. قم بإنشاء مثيل "عالمي" من صندوق "حوض بناء السفن".
2. قم بإنشاء مثيل `WebGl2Renderer` وقم بتمرير عنصر لوحة HTML إلى المُنشئ الخاص به.
3. قم بإنشاء مثيل "Scenegraph" من صندوق "shipyard_scenegraph".
4. قم بإنشاء "RenderSystem" من مثيلات "Scenegraph" و"WebGl2Renderer".
5. أضف "RenderSystem" إلى "World" باستخدام وظيفة "add_system".
6. أضف المكونات والكيانات الضرورية إلى "العالم" لتحديد بنية الرسم البياني للمشهد.
7. قم باستدعاء وظيفة "run_default" في مثيل "World" لبدء عملية العرض.

على سبيل المثال، بالنظر إلى الكود التالي:

''''الصدأ
استخدم الصندوق::prelude::*;
استخدم std::rc::Rc;
استخدم Wasm_bindgen::prelude::*;
استخدام حوض بناء السفن::*;
استخدم shipyard_scenegraph::prelude::*;
استخدم web_sys::HtmlCanvasElement؛
استخدم awsm_web::webgl::{ WebGl2Renderer, BufferMask, GlToggle};

fn render_scene_graph(canvas: HtmlCanvasElement) -> Result<(), ()> {
    // TODO: تنفيذ نظام عرض الرسم البياني للمشهد
}

#[wasm_bindgen(البدء)]
حانة fn start() -> النتيجة<(), JsValue> {
    Let Canvas: HtmlCanvasElement = // احصل على عنصر اللوحة القماشية من المستند

    render_scene_graph(canvas)?;

    نعم(())
}
```

يجب تنفيذ وظيفة `render_scene_graph` لإعداد نظام عرض الرسم البياني للمشهد باستخدام الإرشادات المقدمة.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}