我主要在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
}
}
答案 0 :(得分:0)
一种实现方法是在app.exec()
之前设置默认的QSurfaceFormat。
#include <QSurfaceFormat>
...
QSurfaceFormat surfaceFormat;
surfaceFormat.setMajorVersion(3);
surfaceFormat.setMinorVersion(3);
surfaceFormat.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(surfaceFormat);