glGetString(GL_VERSION)
是否获得系统支持的最大版本或当前上下文的版本?
我知道您需要创建一个上下文才能使glGetString()
起作用,这就是让我想知道它是当前上下文还是最高可用内容的原因。
答案 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连接的字符串