أثناء الترميز في أغال منخفضة المستوى, هل تحتاج إلى إنشاء برنامج جديد 3د لكل القوام?

StackOverflow https://stackoverflow.com/questions/7829869

سؤال

على سبيل المثال...

إذا كنت أقوم بتطوير تطبيق يتطلب أكثر من نسيج واحد فيه (العفاريت الفريدة ، بشكل أساسي) ، هل أحتاج إلى الاتصال context3D.createProgram(); وتجميع جديد Program3D (مع VertexShaderAssembler و أ FragmentShaderAssembler) لكل القوام الفردية التي أود أن استخدامها في التطبيق?

كيف يمكن ل Program3D العمل داخل محرك عادة?هل واحد البرنامج تشغيل كل شيء ، أو أنها لا تستخدم واحدة البرنامج لكل القوام, نماذج, الخرائط?

وأنا الصحيح أن نفترض أن تحتاج فقط إلى إنشاء Program3D مرة واحدة خلال وقت التهيئة (Event.ADDED_TO_STAGE) ، وليس خلال كل لقطة (Event.ENTER_FRAME), حق?

هل كانت مفيدة؟

المحلول

لبرنامج واحد (تظليل) هل يمكن أن يكون القوام متعددة.عادة ما تكتب برنامجا لكل تظليل لديك.على سبيل المثال في لعبتي لدي تظليل واحد (برنامج) للإضاءة التضاريس ، التركيب والتلوين.لدي تظليل آخر (برنامج) للمياه.

لذلك يتم إجراء البرامج مرة واحدة ، ولكن أقول السياق 3 د البرنامج الذي يجب استخدامه قبل رسم المشهد.وبهذه الطريقة سوف رسم كل ما أنا على وشك رسم مع البرنامج الحالي.

مثال على الاستخدام:

context3d.setProgram(WaterShader);
water.drawTriangles();

context3d.setProgram(TerrainShader)
terrain.drawTriangles();

أرسم الماء أولا ثم التضاريس ، كل باستخدام تظليل مختلف.بلدي تيرينشادر لديه القوام متعددة في ، على سبيل المثال.الرمال والصخور والأوساخ القوام.تظليل يقرر أي نسيج لاستخدامها في وقت معين.على سبيل المثال.إذا كان ارتفاع الرأس هو < 10 ، ثم استخدم نسيج الرمل.

لذلك ، قم بإنشاء البرامج مرة واحدة واستخدمها عند الحاجة.

آمل أن يكون هذا يساعدك في الطريق الصحيح.

نصائح أخرى

لا تحتاج إلى برنامج جديد3د لكل نسيج.يستخدم العارض مجموعة البرنامج الأخير كلما قمت باستدعاء دراوتريانجلز ().إذا كنت بحاجة إلى التعامل مع مواد معينة بشكل مختلف بحيث تحتاج إلى تظليل جزء مختلف ، فأنت بحاجة إلى أكثر من كائن واحد من البرنامج 3 ، ولكنها ستكون حالة نادرة تحتاج فيها إلى تظليل مختلف لكل كائن ونسيج.

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

نعم ، يجب عليك إنشاء وتهيئة كائنات البرنامج 3 د في وقت مبكر.أثناء العرض ، يمكنك استدعاء السياق 3 د. سيتبروغرام () لتحديد البرنامج النشط.يتم استخدام هذا البرنامج لتقديم حتى تغييره.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top