【发布时间】:2017-05-07 03:08:11
【问题描述】:
我正在关注这个网站 www.learnopengl.com 上的教程,在着色器教程的最后,我尝试将我自己的统一变量添加到片段着色器中,如下所示:
#version 330 core
in vec3 ourColor;
out vec4 color;
uniform vec4 changeColor;
void main()
{
color = vec4(changeColor, 1.0f);
}
然后我像这样编译和更改统一变量:
ourShader.Use();
GLint fragColorUniformLocation = glGetUniformLocation(ourShader.Program, "changeColor");
glUniform4f(fragColorUniformLocation, 0.0f, 1.0f, 0.0f, 1.0f);
ourShader.use() 只是我们在教程中为Shader 操作编写的Shader 类的一个方法,它只是使用了上述的shader 程序。
当我注释掉我的统一变量和 ourShader.use() 之后的两行时,OpenGL 渲染一切都很好。但是当我尝试添加一个统一变量时,着色器编译器抱怨类型构造函数中的数据太多。我网上搜了一下,没找到有用的,如果重复的话,告诉我,我会删帖的。
【问题讨论】: