سؤال

أحتاج للوصول إلى متغيرات حالة برنامج 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.لكن يجب ضبطهم باستخدام جل لايت () المهام.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top