Acessando variáveis de estado OpenGL em Cg
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?
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.