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?

È stato utile?

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 () .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top