Ich habe eine QSurfaceFormat
auf meinem Fenster, und dieses Oberflächenformat hat "3.0" als seine GL-Versionsnummer festgelegt. Der Code:Warum kann ich OpenGL ES 3.0 nicht in Qt verwenden?
static QSurfaceFormat createSurfaceFormat() {
QSurfaceFormat format;
format.setSamples(4);
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
format.setVersion(3, 0);
return format;
}
int main(int argc, char *argv[]) {
// ...
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QWindow* window = (QWindow*) engine.rootObjects().first();
window->setFormat(::createSurfaceFormat());
// ...
}
Auch in main()
aktiviere ich OpenGL ES-Modus wie folgt aus:
QGuiApplication::setAttribute(Qt::AA_UseOpenGLES);
Das bedeutet, ich bin die Beantragung eines GL ES 3.0 Kontext.
Die ANGLE docs sagen (in einer Tabelle nahe dem Anfang), dass GL ES 3.0 -> D3D 11
API Übersetzung Unterstützung implementiert ist. Und mein System unterstützt D3D 11 nach dxdiag.exe
.
Aber wenn ich meine app starten, die diese QML-Code enthält ...
Text {
text: OpenGLInfo.majorVersion + "." + OpenGLInfo.minorVersion
}
... Ich sehe "2.0" angezeigt wird. Mit der von mir beschriebenen Methode here habe ich festgestellt, dass die maximal unterstützte Version der Schattierungssprache auf meinem PC "100" alias 1.0 ist.
Zur gleichen Zeit, von this Qt blog post Ich weiß, dass Qt GL ES 3.0-Anwendungen unterstützt.
Also Warum kann ich OpenGL ES 3.0 nicht in Qt verwenden?
* I eine QSurfaceFormat gesetzt auf meinem Fenster, und dieses Oberflächenformat hat "3.0" als seine GL-Versionsnummer * Wie machst du das genau? Von welcher Fensterklasse sprichst du? – peppe
@peppe: Ich habe die Frage bearbeitet, um diese Informationen einzubeziehen. –
Die in den Code eingefügte Art und Weise sieht falsch aus, da das Format * nach * der Erstellung des Fensters eingestellt wird (und das ist zu spät, müssen Sie es vorher einstellen). Versuchen Sie, 'QSurfaceFormat :: setDefaultFormat' zu setzen, bevor Sie Ihr' Q (Gui) Application'-Objekt in main erstellen. – peppe