Uniform参数这一节书中给出的cg顶点程序参考代码如下:
// This is C2E2f_passthru from "The Cg Tutorial" (Addison-Wesley, ISBN
// 0321194969) by Randima Fernando and Mark J. Kilgard. See page 62.
struct C3E1v_Output {
float4 position : POSITION;
float3 color : COLOR;
};
C3E1v_Output C3E1v_anycolor(float2 position : POSITION,
uniform float3 constantColor)
{
C3E1v_Output OUT;
OUT.position = float4(position,0,1);
OUT.color = constantColor; // some RGB color
return OUT;
}
在应用程序中是如何将参数uniform float3 constantColor传进来的呢?
在查看了对应的应用程序之后我的理解如下:
第一步,应用程序首先声明了一个static的CGparameter类型的变量myCgVertexParam_constantColor。这个变量类型是一种能够指向Cg入口函数参数的句柄。
然后,应用程序调用Cg库函数如下:
myCgVertexParam_constantColor =
cgGetNamedParameter(myCgVertexProgram, "constantColor");
这样该应用程序就从Cg入口程序C3E1v_anycolor中得到名为“constantColor”的参数句柄。
最后,使用myCgVertexParam_constantColor句柄将颜色值载入图形处理器中。如下:
cgSetParameter3f(myCgVertexParam_constantColor,
0.7, 0.1, 0.1); /* Red */
cgUpdateProgramParameters(myCgVertexProgram);