مادة جافا OpenGL Color Material تغمق عندما يتم تعطيل اختبار العمق

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

سؤال

لقد كنت أعمل مع المخزن المؤقت للعمق في OpenGL (JOGL) لضمان تقديم عناصر معينة أمام الآخرين عن طريق تعطيل المخزن المؤقت للعمق (مفصل في سؤالي السابق Java OpenGL Saving Depth Buffer).

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

شكرا ، جيف

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

المحلول

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

بعض الأسباب التي أستطيع أن أتخيلها ، لماذا سيحدث التأثير الذي تراه:

  • على النقيض من المكون المحيط والانتشار في نموذج الإضاءة ، يحتاج المكون الخاص إلى مراعاة موقع العين بالنسبة إلى الكائن ومصدر الضوء. لذلك ربما يكون هذا أسرع ، عندما يستخدم OpenGL المخزن المؤقت للعمق. أفترض ، بهذه الطريقة - لكل بكسل يتم رسمها - يمكن أن يستخدم قيمة العمق لإكمال إحداثيات العين مع مكون z.

  • ربما يرتبط أيضًا بالتوهين الخفيف؟ عند استخدام توهين الضوء ، يحسب OpenGL المسافة ، والتي يجب أن يسافر الضوء عليها قبل الوصول إلى عينيك (أو هل يتم تبسيطها فقط عن طريق حساب المسافة بين الضوء والكائن فقط؟ أنا لست متأكدًا.)

لذلك أفترض ، أنه لا يمكن استخدام الإضاءة بشكل صحيح بدون مخزن مؤقت للعمق. أعتقد أنك ذكرت في مشاركتك الأخرى ، أنه لا يمكنك فقط مسح المخزن المؤقت للعمق ، لأنه سيتداخل مع بقية التطبيق؟ أعتقد أنه يجب أن يكون هناك حل مع الإستنسل ، شيء مشابه لـ "مثال 10-1: استخدام اختبار الاستنسل" في http://www.glprogramming.com/red/chapter10.html (إنه مكتوب في C ، لكنني آمل أن يكون مشابهًا في Jogl). سيحظر الاستنسل ببساطة التطبيق المتبقي من الرسم على وحدات البكسل الثمينة.

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