我觉得这很烦人,但有没有更好的方法从 Cg 着色器中检索结构参数?
在11_two_light_with_structs示例 (OpenGL) 中,着色器中有一个 struct Material:
Cg着色器:
// From page 128
struct Material {
float3 Ke;
float3 Ka;
float3 Kd;
float3 Ks;
float shininess;
};
然后在代码中他们这样做:
C代码:
myCgVertexParam_material_Ke = cgGetNamedParameter( myCgVertexProgram, "material.Ke" );
myCgVertexParam_material_Ka = cgGetNamedParameter( myCgVertexProgram, "material.Ka");
myCgVertexParam_material_Kd = cgGetNamedParameter( myCgVertexProgram, "material.Kd");
myCgVertexParam_material_Ks = cgGetNamedParameter( myCgVertexProgram, "material.Ks");
看起来很乏味,你不能做吗
myCgVertexParam_materialALL = cgGetNamedParameter( myCgVertexProgram, "material" ) ;
然后是这样的:
cgSetParameterValuefr( myCgVertexParam_materialALL, 13, brassMat ) ;//! no.
在这里,我试图将结构视为一个数组,但是最后一个命令不起作用,错误“参数不是数字类型”。