Accéder aux variables d'état OpenGL dans Cg
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 ?
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.