首页 > 解决方案 > 无法在 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++qtopenglvisual-studio-2017qt5

解决方案


推荐阅读