Qt Quick 3D 图形要求
支持的图形 API、版本和着色语言
Qt Quick 3D Qt 6.0 支持 所支持的所有图形 API 和着色语言。在某些情况下,尤其是 OpenGL 和 OpenGL ES,对 的版本要求可能高于 。Qt Quick Qt Quick 3D Qt Quick
- OpenGL3.0 或更高版本;强烈建议使用 OpenGL 3.3 或更高版本
- OpenGL ES2.0 或更高版本;强烈建议使用 OpenGL ES 3.0 或更高版本
- Direct3D 11.1
- Direct3D 12
- Vulkan1.0 或更高版本
- 金属1.2 或更高版本
着色器流水线基于 Qt 6 的标准方法:兼容 Vulkan 的 GLSL 着色器代码被编译到 SPIR-V,然后被翻译成 GLSL、HLSL 和 MSL 源代码。详情请参阅QtXML Shader Tools 模块文档。
Qt Quick 3D 该模块不直接使用上述任何图形 API。相反,它使用 Qt 渲染硬件接口(Qt Rendering Hardware Interface)抽象,类似于 。Qt Quick
选择图形 API
由于Qt Quick 3D 并不独立初始化渲染或窗口,而是依赖于QQuickWindow 或QQuickView 或Window QML 类型,因此适用于Qt Quick 场景图的所有与图形 API 选择相关的内容也适用于Qt Quick 3D 。可以通过设置下面列出的特定环境变量来控制场景图的行为:
环境变量 | 可能的值 | 描述 |
---|---|---|
QSG_RHI_BACKEND | vulkan ,metal ,opengl ,d3d11 、d3d12 | 请求特定的 RHI 后端。默认情况下,根据平台选择目标图形 API,除非该变量或等效的 C++ API 改写了该 API。默认情况下,Windows 使用 Direct3D 11,macOS 使用 Metal,其他平台使用 OpenGL。 |
QSG_RHI_DEBUG_LAYER | 1 | 在适用情况下(Vulkan、Direct3D),启用图形 API 实现的调试层和/或验证层(如果可用)。 |
QSG_INFO | 1 | 与基于 OpenGL 的渲染路径一样,设置此项可在初始化Qt Quick 场景图时打印系统信息。这对排除故障非常有用。 |
希望始终使用单个给定图形应用程序接口运行的应用程序,可以通过QSG_RHI_BACKEND
enivronment 变量以及 C++ 来请求这样做。例如,在构建任何QQuickWindow 之前,main()
的早期调用会强制使用 Vulkan(否则会失败)。
QQuickWindow::setGraphicsApi(QSGRendererInterface::Vulkan);
注: Qt Quick 的软件适配不支持 3D 内容。
OpenGL 特性
编写良好的Qt Quick 3D 应用程序应在其 main() 函数中调用QQuick3D::idealSurfaceFormat() 并将返回的QSurfaceFormat 作为默认值:
QSurfaceFormat::setDefaultFormat(QQuick3D::idealSurfaceFormat());
在使用 OpenGL 以外的图形应用程序接口时,调用该函数不会产生任何影响,但在使用 OpenGL 应用程序接口时,调用该函数则大有裨益,因为它将创建最适合Qt Quick 3D 需要的 OpenGL 上下文。
支持 OpenGL ES 2.0
Qt Quick 3D OpenGL ES 2.0 支持在 OpenGL ES 2.0 上运行,但功能非常有限。下面列出了一些无法使用或无法正常运行的功能:
- 基于图像的照明、光探针、天空盒
- 阴影映射
- 屏幕空间环境遮蔽
- 多重采样
- 某些后期处理效果
- 使用依赖于 GLSL ES 100 中不存在的 GLSL 功能的着色器的自定义材质
- 阶独立透明度
注: Qt Quick 3D 需要在 WebAssembly 平台上使用 OpenGL ES 3.0 / WebGL 2。不支持 OpenGL ES 2.0 / WebGL 1。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.