سؤال

كنت أتساءل عما إذا كانت هناك طريقة لجعل OpenGL ES تجعل مجموعة من الكواد (المقدمة بتغييرات صفحة الملمس) وتقديمها في Order z (أو العكس).

لاحظ أنني لا أريد Zbuffer، أريد فقط رباعية المقدمة بترتيب ZDepth.

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

لذلك كنت أتساءل عما إذا كنت قد قمت بتعيين ترتيب الكواد من الألف إلى الياء سيفتظر هذا؟

أي مساعدة تلقت كثيرا.

هتافات غنية

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

المحلول

لا يمكنك تحقيق ما تريد بدون Z عازلة / عمق مخزن مؤقت .. ما تسأله هو عمل العازلة العمق المنجز دون تمكينه !!

عندما يتم تمكين Z Buffer، في كل مرة يقوم OpenGL بالسحب إلى بكسل .. فهو يتحقق من قيمة بكسل قيمة z الموجودة ثم تقرر ما إذا كنت تريد رسمها أم لا.

عندما لم يتم تمكين المخزن المؤقت عمق، فإن الكتابة فوق ببساطة بغض النظر عن قيمة Z من البكسل الحالي السابق.

نصائح أخرى

نعم، يمكنك بالتأكيد القيام بذلك، طالما أنت

glEnable(GL_DEPTH_TEST);

وبالطبع، احصل على مجموعة من الأشياء الأخرى الصحيحة. (تأكد من إنشاء مخزن مؤقت عمق، استخدم قيم z الموجودة في نطاق إطلالة رأيك ...)

OpenGL ES لن تفعل هذا من أجلك. سوف يحترم الطلب الذي تحدده، أي الترتيب الذي تكون فيه الكواد من مكالمة السحب. إذا كنت تريد منهم تقديم كوادك مرتبة حسب Z، فسيتعين عليك فرزها بنفسك قبل إرسالها إلى OpenGL ES.

إذا كنت تستخدم مؤشر مخزن مؤقت فهرس، فيمكنك فرز المؤشرات فقط. ولكن لا يزال لديك لحساب Z بنفسك.

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

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