是否glGetString(GL_VERSION)获取您的系统支持的最大版本,或者您当前环境的版本?
我知道您需要创建一个上下文才能glGetString()工作,因此这让我想知道它是当前上下文还是最高可用上下文。
来自规范(从 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) {
...
}
Run Code Online (Sandbox Code Playgroud)