Pergunta

preciso acessar o Variáveis ​​de estado OpenGL (como as matrizes MVP) no meu programa de shader Cg.Estou passando esses valores para meu programa de shader Cg manualmente usando chamadas como cgGLSetStateMatrixParameter() no meu código C/C++.Existe uma maneira mais fácil de fazer isso?

Foi útil?

Solução

Se você estiver em algum recente Perfil Cg (arbvp1 e posteriores), seus programas de shader Cg podem, de fato, acessar o estado OpenGL (matrizes MVP, configurações de material e luz) diretamente.Isso torna a escrita desses programas menos dolorosa.

Aqui estão algumas das variáveis ​​de estado que podem ser acessadas:

Matrizes MVP de todos os tipos:

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

Propriedades de luz e material:

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

Para a lista completa de variáveis ​​de estado, consulte a seção Acessando o estado OpenGL, perfil do programa OpenGL ARB Vertex (arbvp1) no Manual do usuário Cg.

Observação:

  • Todas as variáveis ​​de estado OpenGL são de uniforme digite quando acessado em Cg.
  • Para luz variáveis, o índice é mandatório.(Por exemplo:1 pol. estado.luz[1].ambiente)
  • A iluminação ou luzes não precisam ser habilitadas para usar os valores de luz correspondentes dentro de Cg.Mas, eles precisam ser configurados usando glLight() funções.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top