Frage

Ich zugreifen zu können, müssen OpenGL Zustands-Variablen (wie Sie das MVP-Matrizen) in meiner Cg-shader-Programm.Ich bin vorbei, diese Werte zu meiner Cg-shader-Programm manuell über Aufrufe wie cgGLSetStateMatrixParameter() in meinem C/C++ - code.Gibt es einen einfacheren Weg, dies zu tun?

War es hilfreich?

Lösung

Wenn Sie sich in einem ziemlich den letzten Cg-Profil (arbvp1 und höher), Ihre Cg-shader-Programme können in der Tat Zugriff auf die OpenGL-Zustand (MVP Matrizen -, material-und Licht-Einstellungen) direkt.Dadurch wird das schreiben von diesen Programmen weniger schmerzhaft.

Hier sind einige der Variablen, die zugegriffen werden kann:

MVP-Matrizen aller Art:

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

Licht-und material-Eigenschaften:

state.material.ambient
state.material.diffuse
state.material.specular
state.light[0].ambient

Für die vollständige Liste der Variablen finden Sie im Abschnitt Zugriff auf OpenGL-Zustand, OpenGL ARB Vertex Program Profile (arbvp1) in der Cg Benutzer Handbuch.

Hinweis:

  • Alle OpenGL-state-Variablen sind uniform geben, wenn der Zugriff in der Cg.
  • Für Licht Variablen, die index ist obligatorisch.(Z.B.:1 Zustand.Licht[1].ambient)
  • Beleuchtung oder Licht(s) braucht nicht aktiviert werden, damit diejenigen, die entsprechende Licht-Werte in Cg.Aber Sie müssen eingestellt werden, mit glLight() Funktionen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top