如何为 QtQuick 应用程序选择 OpenGL 上下文
How to choose the OpenGL context for QtQuick applications
我正在写一个QtQuick应用程序,主要是QML,但我有一些部分更直接地使用OpenGL(一个OpenSceneGraph场景)。由于某些原因,我想使用 >= 3.3 的 OpenGL 版本,但 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
}
}
一种方法是在 app.exec()
.
之前 设置默认 QSurfaceFormat
#include <QSurfaceFormat>
...
QSurfaceFormat surfaceFormat;
surfaceFormat.setMajorVersion(3);
surfaceFormat.setMinorVersion(3);
surfaceFormat.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(surfaceFormat);
我正在写一个QtQuick应用程序,主要是QML,但我有一些部分更直接地使用OpenGL(一个OpenSceneGraph场景)。由于某些原因,我想使用 >= 3.3 的 OpenGL 版本,但 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
}
}
一种方法是在 app.exec()
.
#include <QSurfaceFormat>
...
QSurfaceFormat surfaceFormat;
surfaceFormat.setMajorVersion(3);
surfaceFormat.setMinorVersion(3);
surfaceFormat.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(surfaceFormat);