gl_Position 在此配置文件中无法访问?
gl_Position is not accessible in this profile?
当尝试使用 GLFW/GLEW 在 C/C++ 中编译 GLSL 着色器时,出现以下错误:
0(12) : error C5052: gl_Position is not accessible in this profile
我遵循了 learnopengl.com 的教程。代码运行并显示一个空的 while 方块,上面的错误消息被打印到命令行。知道发生了什么以及如何解决它吗?
片段着色器是:
#version 410
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord;
out vec3 ourColor;
out vec2 TexCoord;
void main()
{
gl_Position = vec4(aPos, 1.0);
ourColor = aColor;
TexCoord = aTexCoord;
}
而顶点着色器是:
#version 410
out vec4 FragColor;
in vec3 ourColor;
in vec2 TexCoord;
uniform sampler2D ourTexture;
void main()
{
FragColor = texture(ourTexture, TexCoord);
}
如果您想查看其余代码,请参阅上面的教程 link。
您似乎试图将片段着色器加载为顶点着色器,反之亦然。 gl_Position
只能从顶点着色器中设置,因为它是一个逐顶点属性。不过,以正确的顺序加载着色器应该可以解决这个问题。
当尝试使用 GLFW/GLEW 在 C/C++ 中编译 GLSL 着色器时,出现以下错误:
0(12) : error C5052: gl_Position is not accessible in this profile
我遵循了 learnopengl.com 的教程。代码运行并显示一个空的 while 方块,上面的错误消息被打印到命令行。知道发生了什么以及如何解决它吗?
片段着色器是:
#version 410
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord;
out vec3 ourColor;
out vec2 TexCoord;
void main()
{
gl_Position = vec4(aPos, 1.0);
ourColor = aColor;
TexCoord = aTexCoord;
}
而顶点着色器是:
#version 410
out vec4 FragColor;
in vec3 ourColor;
in vec2 TexCoord;
uniform sampler2D ourTexture;
void main()
{
FragColor = texture(ourTexture, TexCoord);
}
如果您想查看其余代码,请参阅上面的教程 link。
您似乎试图将片段着色器加载为顶点着色器,反之亦然。 gl_Position
只能从顶点着色器中设置,因为它是一个逐顶点属性。不过,以正确的顺序加载着色器应该可以解决这个问题。