OpenGL着色器版本编译错误

Posted

技术标签:

【中文标题】OpenGL着色器版本编译错误【英文标题】:OpenGL Shader Version Compile Error 【发布时间】:2012-09-27 23:18:10 【问题描述】:

在 OpenGL 中编译简单的顶点着色器时遇到问题,我收到以下错误消息:

error(#106) GL2 不支持版本号 error(#279) 布局限定符“位置”无效

我认为我一定是使用了错误的 GL2 版本,但我不知道如何找到我的版本号或去哪里进行升级(是的,我试图寻找答案。)附件是一份副本我的着色器代码仅供参考和我的 openGL 信息。

#version 330 core

layout(location = 0) in vec3 Position;

void main() 
    gl_Position.xyz = Position;

供应商:ATI Technologies Inc. 渲染器:ATI Radeon HD 5700 系列 版本:3.2.9756 兼容性配置文件上下文

【问题讨论】:

我不确定这一点,但#version 330 是否意味着您需要 GLSL 3.3,因此需要 OpenGL 3.3?检查以确保您请求的是足够高版本的 OpenGL 上下文; 2.x 和 3.x 之间有很多不向后兼容的变化。 老实说,我不确定。我在网上查了一下,GLSL 版本似乎与版本标签不匹配。我知道我可以通过不需要版本并在代码中使用 glGetAttribLocation 来解决这个问题,但如果可能的话,我想让它在当前状态下工作。 尝试使用较低版本(例如#version 150)的着色器,看看它们是否可以编译。 确实如此,实际上我只是提取了版本号,虽然现在我无法在家里的电脑上使用 glew 和 intillisense,所以我明天才能做进一步的测试。跨度> 【参考方案1】:
#version 330 core

这表示您的着色器使用 GLSL 版本 3.30。

这个:

版本:3.2.9756 兼容性配置文件上下文

表示您的 OpenGL 版本是 3.2。 The GLSL version that corresponds with OpenGL 3.2 is 1.50. 小于 3.30。因此缺乏编译。

更新您的驱动程序;那些都非常老了。您的卡应该能够支持 GL 4.2。

【讨论】:

以上是关于OpenGL着色器版本编译错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥在使用 OpenGL 编译顶点着色器时会出现着色器编译器错误 #143、#160 和 #216?

无法获得简单的 2D 着色器以在 C++ openGL 中绘制红色三角形(无编译器错误)

OpenGL 着色器无法编译

OpenGL着色器无法编译

OpenGL 着色器无法编译但没有给出错误信息

C++ OpenGL 着色版本错误 - 不支持 GLSL x [Ubuntu 16.04]