1

頂点シェーダーで構造を定義します。

#version 110                                                                 
struct LightSourceParameters {                                               
    vec4 ambient;                                                            
    vec4 diffuse;                                                            
    vec4 specular;                                                           
    vec4 position;                                                           
};                                                                           

単一のライトのインスタンスを宣言します

uniform LightSourceParameters light;                                         

しかし、ライトのパラメーターを取得しようとすると失敗します ( i < 0 )

name = "light.ambient"                                                       
GLint i = glGetUniformLocation(program, name );                              
// i == -1                                                                   

構造体を参照できないことはわかっていますが、ここでは正確なフィールドを参照しています。何が間違っている可能性がありますか?〜

4

1 に答える 1

2

シェーダーでその構造を使用していますか? そうでない場合、コンパイラは均一に最適化する権利を十分に持っています。

于 2012-04-09T16:21:32.943 に答える