Как выбрать контекст OpenGL для приложений QtQuick - PullRequest
1 голос
/ 15 апреля 2019

Я пишу приложение QtQuick, в основном на QML, но у меня есть некоторые части, которые используют OpenGL более напрямую (сцена OpenSceneGraph). По некоторым причинам я хочу использовать версию OpenGL> = 3.3, но Qt выбирает только реализацию 3.0. Мой код:

main.cpp * * 1004

#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 голосов
/ 15 апреля 2019

Один из способов сделать это - установить QSurfaceFormat по умолчанию перед app.exec().

#include <QSurfaceFormat>

...

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