Qt Quick 3D 图形要求
支持的图形 API、版本和着色语言
Qt Quick 3D 支持使用 Qt 6.0 中Qt Quick 所支持的所有图形 API 和着色语言。在某些情况下,特别是对于 OpenGL 和 OpenGL ES,Qt Quick 3D 的版本要求可能高于Qt Quick 。
- OpenGL3.0 或更高版本;强烈建议使用 OpenGL 3.3 或更高版本
- OpenGL ES2.0 或更高版本;强烈建议使用 OpenGL ES 3.0 或更高版本
- Direct3D 11.1
- Direct3D 12
- Vulkan1.0 或更高版本
- Metal1.2 或更高版本
着色器管道基于 Qt 6 的标准方法:与 Vulkan 兼容的 GLSL 着色器代码会被编译为 SPIR-V,随后被转换为 GLSL、HLSL 和 MSL 源代码。详情请参阅QtShader Tools模块的文档。
Qt Quick 3D 不直接与上述任何图形 API 配合使用。相反,它使用 Qt 渲染硬件接口的抽象层,这与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 进行覆盖。当前的默认值是:Windows 系统为 Direct3D 11,macOS 系统为 Metal,其他系统为 OpenGL。 |
QSG_RHI_DEBUG_LAYER | 1 | 在适用情况下(Vulkan、Direct3D),若可用,则启用图形 API 实现的调试和/或验证层。 |
QSG_INFO | 1 | 与基于 OpenGL 的渲染路径类似,设置此选项可在初始化Qt Quick 场景图时打印系统信息。这对于故障排除非常有用。 |
希望始终使用指定单一图形 API 运行的应用程序,可通过QSG_RHI_BACKEND 环境变量以及 C++ 进行请求。例如,在main() 的早期阶段(在构建任何QQuickWindow 之前)调用以下代码,将强制使用 Vulkan(否则将失败)。
QQuickWindow::setGraphicsApi(QSGRendererInterface::Vulkan);注意: 对于 3D 内容,不支持通过软件方式调整 Qt Quick 环境变量 。
OpenGL 相关说明
编写良好的Qt Quick 3D 应用程序应在 main() 函数中调用QQuick3D::idealSurfaceFormat(),并将返回的QSurfaceFormat 作为默认值:
QSurfaceFormat::setDefaultFormat(QQuick3D::idealSurfaceFormat());当使用 OpenGL 以外的图形 API 时,调用此函数不会产生任何效果;但当 API 为 OpenGL 时,此操作非常有益,因为它将创建一个最适合Qt Quick 3D 需求的 OpenGL 上下文。
对 OpenGL ES 2.0 的支持
Qt Quick 3D 支持在 OpenGL ES 2.0 上运行,但功能集受到显著限制。以下列表包含部分不可用或无法正常工作的功能:
- 基于图像的照明、光探针、天空盒
- 阴影映射
- 屏幕空间环境光遮蔽
- 多采样
- 某些后处理效果
- 使用依赖于 GLSL ES 100 中未包含的 GLSL 功能的着色器的自定义材质
- 顺序无关透明度
注意: Qt Quick 3D 在WebAssembly平台上需要OpenGL ES 3.0 / WebGL 2。不支持OpenGL ES 2.0 / WebGL 1。
© 2026 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.