C++ OpenGL着色器版本编译错误

C++ OpenGL着色器版本编译错误,c++,opengl,shader,C++,Opengl,Shader,在OpenGL中编译简单顶点着色器时遇到问题,我收到以下错误消息: GL2不支持错误(#106)版本号 错误(#279)布局限定符“位置”无效 我假设我一定使用了错误的GL2版本,但我不知道如何找到我的版本号或升级到哪里(是的,我试图搜索答案)。附件是我的着色器代码的副本,仅供参考和我的openGL信息 #version 330 core layout(location = 0) in vec3 Position; void main() { gl_Position.xyz =

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

  • GL2不支持错误(#106)版本号
  • 错误(#279)布局限定符“位置”无效
我假设我一定使用了错误的GL2版本,但我不知道如何找到我的版本号或升级到哪里(是的,我试图搜索答案)。附件是我的着色器代码的副本,仅供参考和我的openGL信息

#version 330 core

layout(location = 0) in vec3 Position;

void main() {
    gl_Position.xyz = Position;
}
  • 供应商:ATI技术公司
  • 渲染器:ATI Radeon HD 5700系列
  • 版本:3.2.9756兼容性配置文件上下文
这表示着色器使用GLSL版本3.30

这:

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

这意味着您的OpenGL版本是3.2。小于3.30。因此缺乏汇编


更新你的驱动程序;那些是非常古老的。您的卡应该能够支持GL4.2。

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