J'ai besoin d'accéder aux variables d'état OpenGL (telles que les matrices MVP) dans mon programme Cg Shader. Je passe ces valeurs à mon programme Cg Shader manuellement en utilisant des appels tels que cgGLSetStateMatrixParameter()
dans mon code C/C++. Y a-t-il un moyen plus facile de faire cela?Accès aux variables d'état OpenGL dans Cg
3
A
Répondre
4
Si vous êtes sur une assez récente profil Seizième (arbvp1 et versions ultérieures), vos programmes de shaders ne peut en Cg accès fait l'état OpenGL (matrices de MVP, le matériel et les réglages de lumière) directement. Cela rend l'écriture de ces programmes moins douloureuse.
Voici quelques-unes des variables d'état qui peut être consulté:
matrices de MVP de tous les 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
lumière et propriétés 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 de programme OpenGL ARB Vertex (arbvp1) dans le Cg Users Manual.
Note:
- Toutes les variables d'état OpenGL sont de type uniforme quand on y accède en Seizième.
- Pour lumière variables, l'indice est obligatoire. (Par exemple: 1 dans state.light [1] .ambient)
- Il n'est pas nécessaire d'activer l'éclairage ou la lumière pour utiliser les valeurs de lumière correspondantes dans Cg. Mais, ils doivent être définis en utilisant les fonctions glLight().