Qt Quick 3D 图形要求
支持的图形 API、版本和着色语言
Qt Quick 3D 支持与 Qt 6.0 中 Qt Quick 支持的所有图形 API 和着色语言一起操作。在某些情况下,特别是对于 OpenGL 和 OpenGL ES,Qt Quick 3D 的版本要求可能高于 Qt Quick。
- OpenGL 3.0 或更高版本;强烈推荐 OpenGL 3.3 或更高版本
- OpenGL ES 2.0 或更高版本;强烈推荐 OpenGL ES 3.0 或更高版本
- Direct3D 11.1
- Direct3D 12
- Vulkan 1.0 或更高
- Metal 1.2 或更高
着色器管道基于 Qt 6 的标准方法:将兼容 Vulkan 的 GLSL 着色器代码编译为 SPIR-V,然后将其转换为 GLSL、HLSL 和 MSL 源代码。有关详细信息,请参阅 Qt 着色器工具 模块文档。
Qt Quick 3D 与上述任何图形 API 都不直接工作。相反,它使用与 Qt Quick 相似的 Qt 渲染硬件接口抽象。
选择图形 API
由于 Qt Quick 3D 不会自行初始化渲染或窗口,而是依赖于 QQuickWindow 或 QQuickView 或 QML 的 Window 类型,因此与 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);
注意:Qt Quick的软件适配不支持3D内容。
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功能的自定义材质
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献版权归其各自所有者所有。本提供的文档是根据由自由软件基金会发布的GNU自由文档许可证版本1.3的条款授权的。Qt及其相关商标是The Qt Company Ltd.在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自所有者的财产。