我在窗口上设置了一个
这意味着我正在请求一个GL ES 3.0上下文。 ANGLE文档(在开头附近的表格中)表示实现了
但是当我启动包含此QML代码的应用程序时...
QSurfaceFormat
,并将其GL版本号设置为“3.0”。代码如下:
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());
// ...
}
另外,在main()
中,我启用了OpenGL ES模式,如下所示:
QGuiApplication::setAttribute(Qt::AA_UseOpenGLES);
这意味着我正在请求一个GL ES 3.0上下文。 ANGLE文档(在开头附近的表格中)表示实现了
GL ES 3.0 -> D3D 11
API翻译支持。根据dxdiag.exe
,我的系统支持D3D 11。但是当我启动包含此QML代码的应用程序时...
Text {
text: OpenGLInfo.majorVersion + "." + OpenGLInfo.minorVersion
}
我看到显示了“2.0”。同时,使用我在这里描述的方法,我已确定我的PC支持的最大着色语言版本是“100”,也就是1.0。
与此同时,从这篇Qt博客文章中我知道Qt支持GL ES 3.0应用程序。
那么为什么我不能在Qt中使用OpenGL ES 3.0?
Q(Gui)Application
对象之前调用QSurfaceFormat::setDefaultFormat
。 - peppe