Мы портируем код C ++ из Visual Studio 2008 / Qt4 в Visual Studio 2017 / Qt5 и не можем включить плоскость наложения с помощью OpenGL 4.5 с графической картой NVIDIA Quadro. Тот же код хорошо в 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.
Перестал ли OpenGL в QT5 поддерживать плоскость аппаратного оверлея?