glGetString(GL_VERSION)得到哪个版本?

时间:2014-08-06 22:41:42

标签: opengl

glGetString(GL_VERSION)是否获得系统支持的最大版本或当前上下文的版本?

我知道您需要创建一个上下文才能使glGetString()起作用,这就是让我想知道它是当前上下文还是最高可用内容的原因。

2 个答案:

答案 0 :(得分:3)

从规范(从3.3规范文档中复制):

  

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

所以它是当前上下文支持的版本。如果您在客户端/服务器设置中运行,那么这是一个微妙的方面:

  

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

我读这个的方式,如果两个版本不同,它将返回客户端和服务器之间的最小值。

通常更容易使用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) {
    ...
}

答案 1 :(得分:1)

当前上下文,它是查询当前正在呈现的上下文的有效方式。

请参阅:

http://www.opengl.org/wiki/GLAPI/glGetString

  

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