Question

J'ai besoin d'accéder au Variables d'état OpenGL (comme les matrices MVP) dans mon programme de shader Cg.Je transmets manuellement ces valeurs à mon programme de shader Cg en utilisant des appels tels que cgGLSetStateMatrixParameter() dans mon code C/C++.Existe-t-il un moyen plus simple de procéder ?

Était-ce utile?

La solution

Si vous êtes sur un Profil Cg (arbvp1 et versions ultérieures), vos programmes de shader Cg peuvent en effet accéder directement à l'état OpenGL (matrices MVP, paramètres de matériaux et de lumière).Cela rend l'écriture de ces programmes moins pénible.

Voici quelques-unes des variables d'état accessibles :

Matrices MVP de tous types :

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

Propriétés de la lumière et des matériaux :

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

Pour la liste complète des variables d'état, reportez-vous à la section Accès à l'état OpenGL, profil du programme OpenGL ARB Vertex (arbvp1) dans le Manuel d'utilisation Cg.

Note:

  • Toutes les variables d'état OpenGL sont de uniforme tapez lorsque vous y accédez dans Cg.
  • Pour lumière variables, les indice est obligatoire.(Par exemple:1 dans state.light[1].ambient)
  • L'éclairage ou les lumières n'ont pas besoin d'être activés pour utiliser les valeurs de lumière correspondantes à l'intérieur de Cg.Mais ils doivent être définis à l’aide de glLight() les fonctions.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top