Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Windows 16位颜色中获取有效的QGLContext?_C++_Windows_Qt_Opengl - Fatal编程技术网

C++ 如何在Windows 16位颜色中获取有效的QGLContext?

C++ 如何在Windows 16位颜色中获取有效的QGLContext?,c++,windows,qt,opengl,C++,Windows,Qt,Opengl,我有一个现有的/正在工作的Qt5 QGLWidget,它在Windows7上使用OpenGL桌面和GLSL着色器版本1.5。当我的监视器/显示器驱动程序设置为32位真彩色时工作,但当我更改为16位模式时不工作 QGLFormat::openGLVersionFlags() 使用此选项仅返回支持的OpenGL 1.1版,而在32位真彩色中,它报告的是4.2版。我的视频卡是nVidia GTX 670 我相信这与请求创建正确的QGLContext有关,但我不确定我需要请求什么选项,并且测试它已经证

我有一个现有的/正在工作的Qt5 QGLWidget,它在Windows7上使用OpenGL桌面和GLSL着色器版本1.5。当我的监视器/显示器驱动程序设置为32位真彩色时工作,但当我更改为16位模式时不工作

QGLFormat::openGLVersionFlags()
使用此选项仅返回支持的OpenGL 1.1版,而在32位真彩色中,它报告的是4.2版。我的视频卡是nVidia GTX 670

我相信这与请求创建正确的QGLContext有关,但我不确定我需要请求什么选项,并且测试它已经证明是在黑暗中拍摄的。以下是我目前通过在线搜索尝试的内容:

QGLFormat f = QGLFormat::defaultFormat();
f.setVersion(4, 2); // also tried "3, 2" which coincides with GLSL 1.5
f.setProfile(QGLFormat::CoreProfile);
f.setDepth(true);
QGLFormat::setDefaultFormat(f);
通过使用winapi自己创建上下文,我成功地使用了底层窗口,但是我找不到Qt版本的代码有什么问题


我至少想弄清楚情况,不要崩溃,因为没有创建支持我所需OpenGL版本的上下文。

谁在使用它,自从伏都教时代以来就没有16位颜色的管道。我唯一的回答是它可以完成,而且是,现在我正试图阻止它看起来我能做的最好的事情就是检测模式并退出。尽管我的Win32窗口代码可以工作,但我似乎无法让类似的QGLWidget工作。