在没有 glGetUniformLocation 的情况下引用制服
Referring to uniforms without glGetUniformLocation
在我的着色器中,我喜欢使用这样的语法:
layout (location = 0) in vec3 aPos;
这样我就可以在 glVertexAttribPointer
中使用索引 0
等等,从而节省 glGetAttribLocation
调用的工作量。我想对 uniform
值做同样的事情,但如果我这样做
layout (location = 2) uniform float offset;
我的顶点着色器编译失败。有什么方法可以实现相同的行为而不使用 glGetUniformLocation
?
OpenGL 4.3 or the ARB_explicit_uniform_location extension 允许您使用该语法在着色器中指定统一位置。所以你的着色器 #version
需要是 430 或者你需要在你的着色器中激活扩展才能使用这个语法。
在我的着色器中,我喜欢使用这样的语法:
layout (location = 0) in vec3 aPos;
这样我就可以在 glVertexAttribPointer
中使用索引 0
等等,从而节省 glGetAttribLocation
调用的工作量。我想对 uniform
值做同样的事情,但如果我这样做
layout (location = 2) uniform float offset;
我的顶点着色器编译失败。有什么方法可以实现相同的行为而不使用 glGetUniformLocation
?
OpenGL 4.3 or the ARB_explicit_uniform_location extension 允许您使用该语法在着色器中指定统一位置。所以你的着色器 #version
需要是 430 或者你需要在你的着色器中激活扩展才能使用这个语法。