我需要访问 照片状态变量 (例如MVP矩阵)在我的Cg色器的程序。我通过这些价值观对我的Cg色器程序手动使用诸如电话 cgGLSetStateMatrixParameter() 在我的C/C++编码。是有一个更简单的方式做到这一点?

有帮助吗?

解决方案

如果你在任何相当近 Cg档 (arbvp1 和以后),您的Cg色器的程序实际上可以访问所载国家(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

为完整的列表状态变量,请参考的部分 访问照片状态,载ARB顶点的节目配置文件(arbvp1)Cg用户手册.

注:

  • 所有的照片状态变量是的 均匀 类型访问时,在Cg。
  • 对于 变量, 索引 是强制性的。(如:1 状态。光[1].环境)
  • 灯光或灯光(s)不需要能够使用这些相应的光价值观的内部Cg。但是,他们需要设置的使用 glLight() 功能。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top