L'accesso OpenGL variabili di stato in Cg
Domanda
Ho bisogno di accedere al OpenGL variabili di stato (come MVP matrici) nel mio Cg shader programma.Sto passando questi valori per il mio Cg shader programma manualmente mediante chiamate come cgGLSetStateMatrixParameter()
nel mio codice C/C++.C'è un modo più semplice per fare questo?
Soluzione
Se sei su un profilo Cg abbastanza recente ( arbvp1 e successivi), i tuoi programmi shader Cg possono infatti accedere allo stato OpenGL (matrici MVP, materiale e luce impostazioni) direttamente. Questo rende meno doloroso scrivere quei programmi.
Ecco alcune delle variabili di stato a cui è possibile accedere:
Matrici MVP di tutti i tipi:
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
Proprietà della luce e dei materiali:
state.material.ambient
state.material.diffuse
state.material.specular
state.light[0].ambient
Per l'elenco completo delle variabili di stato, consultare la sezione Accesso allo stato OpenGL, Profilo del programma di vertice ARB OpenGL (arbvp1) nel Manuale utente Cg .
Nota:
- Tutte le variabili di stato OpenGL sono di tipo uniforme quando si accede in Cg.
- Per le variabili leggere , indice è obbligatorio. (Ad esempio: 1 in state.light [1] .ambient )
- L'illuminazione o le luci non devono essere abilitate per usare quei valori di luce corrispondenti all'interno di Cg. Tuttavia, devono essere impostati utilizzando le funzioni glLight () .