我需要在我的Cg着色器程序中访问 OpenGL状态变量(例如MVP矩阵)。我正在使用我的C / C ++代码中的cgGLSetStateMatrixParameter()
等调用手动将这些值传递给我的Cg着色器程序。有更简单的方法吗?
答案 0 :(得分:4)
如果您使用的是最新的 Cg配置文件( arbvp1 及更高版本),您的Cg着色器程序实际上可以访问OpenGL状态(MVP矩阵,材质和光线)设置)直接。这使得编写这些程序不那么痛苦。
以下是一些可以访问的状态变量:
所有类型的MVP矩阵:
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
光和材料属性:
state.material.ambient
state.material.diffuse
state.material.specular
state.light[0].ambient
有关状态变量的完整列表,请参阅 Cg Users Manual 中的访问OpenGL状态,OpenGL ARB顶点程序配置文件(arbvp1)部分。< / p>
注意: