OpenGL着色器错误C1068:类型构造函数中的数据过多



我正在关注本网站上的教程www.learnopengl.com,在着色器教程的末尾,我尝试将自己的统一变量添加到fragment着色器,看起来像这样:

#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((只是我们在教程中为着色器操作编写的类着色器的一种方法,它只是使用上述着色器程序。

OpenGL会在我评论我的统一变量和我们的shader.use.use((之后的两行时一切正常。但是,当我尝试添加统一变量时,着色器编译器会抱怨type构造函数中有太多数据。I搜索了网络,找不到任何有用的东西,如果这是重复的话,请告诉我,我将删除帖子。

错误消息很清楚:您将参数传递给无效的构造函数。在这种特定情况下,您尝试将vec4 changeColor和额外的float传递给vec4构造函数(这意味着您要通过5个Floats(:

vec4(changeColor, 1.0f);

由于目前尚不清楚您要做什么(或为什么要在VEC4中添加1.0F(,但是您要么必须将changeColor更改为vec3或删除1.0f

最新更新