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 回答