OpenGL,如何设置GLSL版本?

我的系统使用Freeglut的OpenGL和GLSL的默认版本是4.1,使用glew时,初始化,着色器编译和链接以及执行都没有问题。

这个默认版本发生在我没有指定glutInitContextVersion,glutInitContextFlags或glutInitContextProfile时,那么我的着色器工作正常。

无论我支持这个版本,我想提供一个3.3替代版本。 当我使用指定3.3版本的glut上下文时,应用程序以无错误开始,glew不会抱怨。 我的着色器假设使用GLSL 3.3版本,然后我设置了该行

#version 330

但是,当我的着色器被编译时,OpenGL抱怨一个无效的枚举消息。 我尝试删除这一行或将其设置为另一个版本,但我仍然得到相同的错误。 在完成所有初始化之后,我要求OpenGL版本,并且获得正确的3.3版本,但对于GLSL版本,我仍然获得了默认版本4.1。

glGetString(GL_SHADING_LANGUAGE_VERSION);

请纠正我是否正确,我猜这个版本被着色器代码中的版本行覆盖。 我想知道是否有机会初始化指定GLSL版本的上下文?

编辑:我终于解决了它。 如果我将核心配置文件与兼容模式一起设置

glutInitContextProfile(GLUT_CORE_PROFILE | GLUT_COMPATIBILITY_PROFILE);

2.1版本的OpenGL命令不会被识别。 这与教程中提供的信息不符。 无论如何,通过设置GLUT_COMPATIBILITY_PROFILE它可以使用3.3或更高版本。

链接地址: http://www.djcxy.com/p/38511.html

上一篇: OpenGL, how to set up GLSL version?

下一篇: Can't set desired OpenGL version in QGLWidget