الوصول إلى متغيرات حالة OpenGL في Cg
سؤال
أحتاج للوصول إلى متغيرات حالة برنامج OpenGL (مثل مصفوفات MVP) في برنامج تظليل Cg الخاص بي.أقوم بتمرير هذه القيم إلى برنامج Cg Shader يدويًا باستخدام مكالمات مثل cgGLSetStateMatrixParameter()
في كود C/C++ الخاص بي.هل هناك طريقة أسهل لعمل هذا الشيء؟
المحلول
إذا كنت في الآونة الأخيرة إلى حد ما الملف الشخصي لـCg (arbvp1 والإصدارات الأحدث)، يمكن لبرامج تظليل Cg الخاصة بك في الواقع الوصول إلى حالة OpenGL (مصفوفات MVP، وإعدادات المواد والضوء) مباشرةً.وهذا يجعل كتابة تلك البرامج أقل إيلاما.
فيما يلي بعض متغيرات الحالة التي يمكن الوصول إليها:
مصفوفات MVP بجميع أنواعها:
state.matrix.mvp
state.matrix.inverse.mvp
state.matrix.modelview
state.matrix.inverse.modelview
state.matrix.modelview.invtrans
state.matrix.projection
state.matrix.inverse.projection
خصائص الضوء والمواد:
state.material.ambient
state.material.diffuse
state.material.specular
state.light[0].ambient
للحصول على القائمة الكاملة لمتغيرات الحالة، راجع القسم الوصول إلى حالة OpenGL، ملف تعريف برنامج OpenGL ARB Vertex (arbvp1) في ال دليل مستخدم سي جي.
ملحوظة:
- جميع متغيرات حالة OpenGL هي من زي مُوحد اكتب عند الوصول إليه في Cg.
- ل ضوء المتغيرات، فِهرِس إلزامي.(على سبيل المثال:1 في الحالة. الضوء [1]. المحيطة)
- لا يلزم تمكين الإضاءة أو الضوء (الأضواء) لاستخدام قيم الإضاءة المقابلة داخل Cg.لكن يجب ضبطهم باستخدام جل لايت () المهام.