如何为QtQuick应用程序选择OpenGL上下文

时间:2019-04-15 08:37:58

标签: c++ qt opengl qtquick2

我主要在QML中编写QtQuick应用程序,但是我有一些部分更直接地使用OpenGL(OpenSceneGraph场景)。由于某些原因,我想使用OpenGL版本> = 3.3,但是Qt只选择3.0实现。我的代码是:

main.cpp

#include <QApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    // Create the app.
    QApplication app(argc, argv);

    // Start the UI.
    QQmlApplicationEngine engine;
    engine.load(QUrl("main.qml"));

    return app.exec();
}

main.qml

import QtQuick 2.7
import QtQuick.Controls 2.2

ApplicationWindow {
  id: root
  width: 800
  height: 600
  title: "App"

  visible: true

  Label {
    text: "OpenGL: " + OpenGLInfo.majorVersion + ' ' + OpenGLInfo.minorVersion + OpenGLInfo.profile
  }
}

1 个答案:

答案 0 :(得分:0)

一种实现方法是在app.exec()之前设置默认的QSurfaceFormat。

#include <QSurfaceFormat>

...

QSurfaceFormat surfaceFormat;
surfaceFormat.setMajorVersion(3);
surfaceFormat.setMinorVersion(3);
surfaceFormat.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(surfaceFormat);