我在窗口上設置了QSurfaceFormat
,這個表面格式的GL版本號設置爲「3.0」。代碼:爲什麼我不能在Qt中使用OpenGL ES 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 docs說(在一個表格附近開始)GL ES 3.0 -> D3D 11
API翻譯支持被實現。並且我的系統支持根據dxdiag.exe
的D3D 11。
但是,當我啓動我的應用程序,其中包含此QML代碼...
Text {
text: OpenGLInfo.majorVersion + "." + OpenGLInfo.minorVersion
}
...我看到 「2.0」 顯示。另外,使用我描述的方法here,我已經確定我的PC上最大支持的着色語言版本是「100」,也就是1.0。
與此同時,從this Qt blog post我知道Qt支持GL ES 3.0應用程序。
那麼我爲什麼不能使用OpenGL ES 3.0 Qt中?
*我設置QSurfaceFormat在我的窗口上,並且這種表面格式的GL版本號設置爲「3.0」*你怎麼做到這一點?你在說什麼窗口課? – peppe
@peppe:我編輯了問題以包含該信息。 –
在代碼中粘貼的方式看起來不正確,因爲它在創建窗口後設置了格式*(並且這太遲了,您必須先設置它)。在main中創建'Q(Gui)Application'對象之前,嘗試調整'QSurfaceFormat :: setDefaultFormat'。 – peppe