c++ - 无法在 Qt5 中使用 OpenGL 打开覆盖平面
问题描述
我们正在将一些 C++ 代码从 Visual Studio 2008/Qt4 移植到 Visual Studio 2017/Qt5,并且无法通过 NVIDIA Quadro 显卡使用 OpenGL 4.5 打开覆盖平面。相同的代码在 VS2008/Qt4 中是可以的。以下是一个小示例程序。
int main (int argc, char *argv[])
{
printf ("debug test1\n");
QApplication a (argc, argv);
QGLFormat glFmt;
glFmt.setStereo (true);
glFmt.setOverlay (true);
glFmt.setDoubleBuffer (true);
QGLWidget *qtWid = new QGLWidget (glFmt);
qtWid->show();
printf ("version %d.%d\n", qtWid->format().majorVersion(), qtWid->format().minorVersion());
printf ("stereo %d\n", qtWid->format().stereo());
printf ("hasOverlay %d\n", qtWid->format().hasOverlay());
printf ("hasOpenGLOverlays %d\n", qtWid->format().hasOpenGLOverlays());
printf ("doubleBuffer %d\n", qtWid->format().doubleBuffer());
return a.exec ();
}
在 VS2017/Qt5 中,hasOverlay 和 hasOpenGLOverlays 总是返回 0。在 VS2008/Qt4 中它们返回 1。Quadro 卡有一个硬件覆盖平面,它在 NVIDIA 控制面板中打开。
QT5 中的 OpenGL 是否停止支持硬件覆盖平面?
解决方案
推荐阅读
- c# - C# 多维数组 (2D) 分配了足够多的内存
- javascript - 为什么内部的ajax调用无法识别匿名函数输入参数
- javascript - 当扩展 Obect.prototype 然后在一个 istance 上使用 for in 时,js 也会遍历原型
- reporting-services - 如何让过滤视图在实体 SSRS 报告中工作
- ios - 使用 RxSwift 链接登录操作
- vuejs2 - Vue js 动态组件嵌套
- docker - 在 Docker 容器中部署 Spring Boot 应用程序而不自动启动 Tomcat
- c# - SQL Server 更新数据库的列名无效
- cocoa - NSMatrix 的 NSUserDefaults
- apache-flink - 为什么在使用 ProcessingTime 时,只有在我输入第二个事件后,CEP 才打印第一个事件?