احتاج الى بعض المساعده منكم الله يخليكم 1 : كيف يمكن عمل Render لنفس المجسمات ولكن من كمرتين ؟ بدون render - clear - render حتى ولو استخدمنا multi Render Target 2 : كيف يمكن رسم (Decals) او (طبع) على الارض مثل الشقوق بأعداد كبيره ؟ و شكرا جميعا
أنت لا تمنحنا تفاصيل كافية لمشكلتك, هل تستعمل XNA ؟
بشكل عام : 1- تقسيم الشاشة إلى مساحتين فيكون لدينا إثنان من (Viewport), نستعمل كامرا لكل (Viewport) 2- يكفي تثبيت صورة على المجسم (Texture) في المكان المحدد, يمكنك إعادة تثبيت الصورة عدة مرات
شكراً لردكم انا استخدم xna بنسبه لموضوع الكميرا ... قصدي هو : هل يوجد طريقه لأخذ صوره للمجسمات من جهتين على نفس الرندر (بدون استهلاك مساحه من كرت الشاشه) اي رندر وحد نخرج منه صورتين ..وذلك لتسريع بعض الاشياء مثل الظل ..(كنت افكر في المخطط التالي
اليمين العادي(رندرين واحد للظل و الاخر لكل شيء) الشمال الذي افكر فيه(رندر واحد نأخذ منه صوره للشاشه و صوره الظل ل next frame
فما رأيكم بهذه الفكره و هل هي ممكنه
الموضوع الاخر الي هو الطبع
كيف يمكن رسم عدد كبير من الطبع (decals) ؟؟ الموضوع كله موضوع shader HLSL ..
فهمت الهدف الذي تقصده، لكن باختصار وباستعمل XNA، تحقيقه غير ممكن. باستخدام D3D10 فما فوق، تستطيع استخدام مظلل المجسمات (Geometry Shader) لمضاعفة عدد المثلثات وتحويل كل منها باستخدام المصفوفة الخاصة (مثلاً، المثلث الأصلي يتم تحويله بمصفوفة العرض، والنسخة منه يتم تحويلها بمصفوفة الظل). ثم بعد ذلك، تستخدم هدفي رسم وتجبر مظلل البكسلات على إظهار البكسلات المناسبة من أحد النسختين فقط.
كما تلاحظ، المحصلة النهائية تحوي الكثير من الهدر في المعالجة. فمن أجل تفادي إعادة رسم المجسم عدة مرات، اضطررت لإبطاء كامل المعالجة. لذلك أعتقد أنه في الوقت الحالي لا يفضل استخدام هذا الأسلوب لتسريع الأداء. ربما تختلف المقاييس في المستقبل، لكن ليس الآن حتماً...
وفي 23/رجب/1432 03:28 ص، أعرب 16mofed84 عن رأيه بالموقف كالآتي:
كيف يمكن رسم عدد كبير من الطبع (decals) ؟؟
إحدى أبرز المشاكل التي تعاني منها المحركات عند رسم الطبعات هي البطء في توليد أوامر الرسم. محرك أنريل مثلاً يقوم بإصدار أمر رسم لكل طبعة، وهذا بطييييييء. المفروض أن تقوم بتجميع كافة الطبعات التي تريد رسمها في مخزن واحد (مخزن رؤوس ومخزن فهارس) ثم ترسل أمر رسم واحد لرسم كافة هذه الطبعات بضربة واحدة. بهذه الطريقة تستطيع رسم الآلاف من الطبعات دون أية مشاكل في الأداء.
VertexBuffer : يحتوي إحدثيات الرؤوس في المعلم (x, y, z), أعداد حقيقية يمكن أن تكون موجبة أو سالبة IndexBuffer : يحتوي أعداد طبيعية موجبة محصورة بين 0 و عدد الرؤوس, كل 3 من هذه الأعداد تمثل مثلث في المعلم مثلا, إذا كان ال Index Buffer يحتوي على : [3, 2, 5, 1, 4, 6] فإن الرأس 3 و 2 و 5 يشكلون مثلث و الرؤوس 1 و 4 و 6 تشكل مثلث آخر عدد المثلثات هو : IndexBuffer / 3
إذا كان ذلك لرسم الثقوب على الجدران، فيمكنك حساب إحداثيا نقطة التصادم ثم إستعمال هذه المعلومات للطبع في المكان المناسب إذا كنت تستعمل XNA فأنا أنصحك بإستعمال محرك رسوم قوي، أقترح لك AXIOM الذي هو عبارة عن ترجمة لكود المحرك OGRE من ال C++ إلى C#