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。谢谢你的回答。由于我没有使用客户机/服务器设置,幸运的是,我不需要担心第二部分。