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?