これは面倒ですが、Cgシェーダーから構造体パラメーターを取得するためのより良い方法はありますか?
11_two_light_with_structsの例(OpenGL)では、シェーダーにstructMaterialがあります。
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.
ここでは、構造体を配列として処理しようとしていますが、最後のコマンドは機能せず、「パラメーターは数値型ではありません」というエラーが表示されます。