c - gl_Position 在此配置文件中不可访问?

标签 c opengl glsl glfw glew

尝试使用 GLFW/GLEW 在 C/C++ 中编译 GLSL 着色器时出现以下错误:

0(12) : error C5052: gl_Position is not accessible in this profile

我遵循了 learnopengl.com 中的教程.代码运行并显示一个空的 while 方 block ,上面的错误消息被打印到命令行。知道发生了什么以及如何解决它吗?

片段着色器是:

#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);
}

如果您想查看其余代码,请参阅上面的教程链接。

最佳答案

看起来您试图将片段着色器加载为顶点着色器,反之亦然。 gl_Position 只能在顶点着色器中设置,因为它是一个逐顶点属性。不过,以正确的顺序加载着色器应该可以解决这个问题。

关于c - gl_Position 在此配置文件中不可访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54733233/

相关文章:

c++ - 如何在运行时检测默认 GPU?

opengl - 结构体中的 GLSL Sampler2D

c - float 变量初始化为 0.0 时,float 值是否保证为 0?

c - 排列 C 数组中的元素,因此没有间隙

c - 在一个程序中用 XOR 对文件进行编码和解码

c++ - 传递纹理坐标的 OpenGL 几何着色器

c++ - 精度问题 - 远离原点的观点 - OpenGL C++

c++ - C/C++ 赋值给 std::queue<char*>

c++ - GLReadPixels 返回一个单一的、不正确的、一遍又一遍重复的值

c++ - 如何设置 OpenGL 版本?