GLGETSTRING(GL_VERSION)与请求的版本不匹配
The glGetString(GL_VERSION) does not match the requested version
我试图理解当我使用此功能时会得到奇怪的结果时,我会返回什么。这是否返回由我的GPU支持的最大OpenGL版本或创建当前上下文的OEPNGL版本。根据GLGETSTRING(GL_Version)获得哪个版本?此返回创建的当前上下文的OpenGL版本,但我认为事实并非如此。我想强行创建OpenGL上下文3.1(正向兼容),OpenGL上下文2.0和OpenGL上下文1.1。以下是我的观察
案例1:使用wglcreatecontextattribsarb创建上下文。我认为它正在返回最高的OpenGL上下文版本子案例1:
int attribs[] =
{
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 3,
WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB,
0
};
//glGetString(GL_VERSION) returns "4.3.0 - Build 10.18.14.4264"
亚案例2:
int attribs[] =
{
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
WGL_CONTEXT_MINOR_VERSION_ARB, 1,
WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
0
};
//glGetString(GL_VERSION) returns "4.3.0 - Build 10.18.14.4264"
亚案例3:
int attribs[] =
{
WGL_CONTEXT_MAJOR_VERSION_ARB, 2,
WGL_CONTEXT_MINOR_VERSION_ARB, 0,
0
};
//glGetString(GL_VERSION) returns "4.3.0 - Build 10.18.14.4264"
亚案例4:
int attribs[] =
{
WGL_CONTEXT_MAJOR_VERSION_ARB, 1,
WGL_CONTEXT_MINOR_VERSION_ARB, 1,
0
};
//glGetString(GL_VERSION) returns "4.3.0 - Build 10.18.14.4264"
案例2:使用Glut创建OpenGL上下文
亚案例1:
glutInitContextVersion (3, 1);
glutInitContextFlags (GLUT_FORWARD_COMPATIBLE);
//glGetString(GL_VERSION) returns "3.1.0 - Build 10.18.14.4264"
亚案例2:
glutInitContextVersion (2, 0);
//glGetString(GL_VERSION) returns "4.3.0 - Build 10.18.14.4264"
亚案例3:
glutInitContextVersion (1, 1);
//glGetString(GL_VERSION) returns "4.3.0 - Build 10.18.14.4264"
有人可以解释这种行为。我可以在创建上下文的位置发布完整的代码。另外,请有人指导我如何创建OpenGL 3.1(正向兼容上下文),OpenGL 2.0上下文和OpenGL 1.1使用Glut和WGLCreateContextAttribsarb?
glgetString(gl_version)返回当前上下文的版本。这通常可以是(但并非总是)最高支持的版本。
的原因是在OpenGL规范中:
属性名称wgl_context_major_version_arb和 WGL_CONTEXT_MINOR_VERSION_ARB请求OpenGL上下文支持 API的指定版本。如果成功的话,上下文 返回必须向后与所请求的上下文兼容。
然后继续指出,如果您请求3.0以下的版本,则上下文可以是版本3.2或更大的,只要它们处于兼容性配置文件中即可。它为您提供4.3.0,只是因为它应该起作用。
如果您请求3.1,它也可以为您提供超过3.2的任何核心版本。如果您请求3.2或更新,则可以为您提供任何以后的版本,只要没有删除功能即可。目前,据我所知,这是没有的。
https://www.opengl.org/registry/specs/arb/wgl_create_context.txt
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 如何在boost beast http请求中设置http头
- 发送一个带有libcurl C++问题的帖子请求:s
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 在多个核心中处理一个HTTP请求
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 如何在 CMake 目标上请求 C++11 或更高版本
- GLGETSTRING(GL_VERSION)与请求的版本不匹配
- 声纳-请求服务器版本失败