OpenGL,如何设置GLSL版本

OpenGL, how to set up GLSL version?

本文关键字:设置 GLSL 版本 何设置 OpenGL      更新时间:2023-10-16

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

当我不指定glutInitContextVersion, glutInitContextFlags或glutInitContextProfile时,这个默认版本会发生,然后我的着色器工作正确。

无论我是否支持这个版本,我都想提供一个3.3替代版本。当我使用指定3.3版本的glut上下文时,应用程序启动时没有错误,glow也没有抱怨。我的着色器应该使用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或更高版本。