Warum kann ich OpenGL ES 3.0 in Qt nicht verwenden?
Ich setze einQSurfaceFormat
in meinem Fenster und für dieses Oberflächenformat wurde "3.0" als GL-Versionsnummer festgelegt. Der Code
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 inmain()
Ich aktiviere den OpenGL ES-Modus wie folgt:
QGuiApplication::setAttribute(Qt::AA_UseOpenGLES);
Dies bedeutet, ich fordere einen GL ES 3.0-Kontext an.
DasANGLE docs sag (in einer Tabelle am Anfang), dassGL ES 3.0 -> D3D 11
API-Übersetzungsunterstützung ist implementiert. Und mein System unterstützt D3D 11 nachdxdiag.exe
.
Aber wenn ich meine App starte, die diesen QML-Code enthält ...
Text {
text: OpenGLInfo.majorVersion + "." + OpenGLInfo.minorVersion
}
... ich sehe "2.0" wird angezeigt. Auch mit der von mir beschriebenen MethodeHie, Ich habe festgestellt, dass die maximal unterstützte Shading-Sprachversion auf meinem PC "100" ist, auch bekannt als 1.0.
Zur gleichen Zeit vondieser Qt-Blog-Beitrag Ich weiß, dass Qt GL ES 3.0-Apps unterstützt.
So Warum kann ich OpenGL ES 3.0 nicht in Qt @ verwende?