Opengl glGetString(GLU版本)获得哪个版本?

Opengl glGetString(GLU版本)获得哪个版本?,opengl,Opengl,glGetString(GL\u版本)是获得系统支持的最大版本,还是当前上下文支持的版本 我知道您需要创建一个上下文才能使glGetString()正常工作,因此我想知道它是当前上下文还是可用的最高上下文。当前上下文是查询当前渲染的上下文的有效方法 见: glGetString:返回描述当前GL连接的字符串 从规范(从3.3规范文件复制): 字符串查询返回指向描述当前GL上下文属性的UTF-8编码、以NULL结尾的静态字符串的指针 所以它是当前上下文支持的版本。如果您在客户机/服务器设置中操作

glGetString(GL\u版本)
是获得系统支持的最大版本,还是当前上下文支持的版本


我知道您需要创建一个上下文才能使
glGetString()
正常工作,因此我想知道它是当前上下文还是可用的最高上下文。

当前上下文是查询当前渲染的上下文的有效方法

见:

glGetString:返回描述当前GL连接的字符串

从规范(从3.3规范文件复制):

字符串查询返回指向描述当前GL上下文属性的UTF-8编码、以NULL结尾的静态字符串的指针

所以它是当前上下文支持的版本。如果您在客户机/服务器设置中操作,则有一个微妙的方面:

GetString返回当前总账上下文支持的版本号(在版本字符串中)。因此,如果客户端和服务器支持不同的版本,则返回兼容的版本

按照我的理解,如果两个版本不同,它将返回客户端和服务器之间的最小值

使用
glGetIntegerv()
检查版本通常更容易。这样,您就不必开始解析字符串,还可以获得其他详细信息:

GLint majVers = 0, minVers = 0, profile = 0, flags = 0;
glGetIntegerv(GL_MAJOR_VERSION, &majVers);
glGetIntegerv(GL_MINOR_VERSION, &minVers);
glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &profile);
glGetIntegerv(GL_CONTEXT_FLAGS, &flags);

if (profile & GL_CONTEXT_CORE_PROFILE_BIT) {
    ...
}

if (profile & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) {
    ...
}

if (flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT) {
    ...
}

“当前上下文”是操作系统上下文。你在什么操作系统上尝试这个?现在我正在Windows 8.1上工作,但最终会转向OSX和Linux。谢谢你的回答。由于我没有使用客户机/服务器设置,幸运的是,我不需要担心第二部分。