QRhiShadingRateMap Class
一个封装纹理或另一种原生 3D API 对象的对象。更多...
| 头文件: | #include <rhi/qrhi.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS GuiPrivate) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
| qmake: | QT += gui-private |
| 自: | Qt 6.9 |
| 继承自: | QRhiResource |
公共类型
(since 6.9) struct | NativeShadingRateMap |
公共函数
| virtual bool | createFrom(QRhiShadingRateMap::NativeShadingRateMap src) |
| virtual bool | createFrom(QRhiTexture *src) |
重新实现的公共函数
| virtual QRhiResource::Type | resourceType() const override |
详细说明
注意:这是一个 兼容性保证有限的 RHI API,详情请参阅QRhi 。
有关可变速率着色 (VRS) 的介绍,请参阅https://learn.microsoft.com/en-us/windows/win32/direct3d12/vrs。Qt 支持 Direct 3D 12 和 Vulkan 提供的 VRS 功能子集。 此外,通过允许使用现有的 MTLRasterizationRateMap 对象来设置 QRhiShadingRateMap,Qt 还支持 Metal 略有不同的机制。
成员函数文档
[virtual] bool QRhiShadingRateMap::createFrom(QRhiShadingRateMap::NativeShadingRateMap src)
设置着色速率映射,使其使用原生 3D API 的着色速率对象src 。
成功时返回true ,不支持时返回false 。
注意: 仅当报告支持QRhi::VariableRateShadingMap 功能,且不支持QRhi::VariableRateShadingMapWithTexture 功能时,此方法 才有效。目前对于 Metal 而言,在 GPU 支持可变速率着色(variable rate shading)的前提下,此情况成立。
注意:在 Metal中 ,src 的object 字段预计将包含一个 id<MTLRASTERIZATIONRATEMAP>。请注意,Qt 除了将 MTLRasterizationRateMap 传递给 MTLRenderPassDescriptor 之外,不会执行任何其他操作。 如果需要任何特殊的缩放处理,则由应用程序(或 XR 合成器)负责执行。
[virtual] bool QRhiShadingRateMap::createFrom(QRhiTexture *src)
设置着色率贴图,使其使用纹理src 作为包含各瓦片着色率的图像。
成功时返回 `true `,不支持时返回 `false `。
QRhiShadingRateMap 不会获取src 的所有权。
注意:此功能 仅在报告支持QRhi::VariableRateShadingMapWithTexture 功能时才有效。实际上,在使用现代显卡时,Vulkan和Direct 3D 12可能支持该功能。例如,OpenGL或Metal则永远不支持该功能。
注意: src 的格式必须为QRhiTexture::R8UI 。
注意: src 的 宽度必须为ceil(render_target_pixel_width / (float)tile_width) ,高度必须为ceil(render_target_pixel_height / (float)tile_height) 。应用程序应始终根据上述公式确保纹理大小符合预期。可通过QRhi::resourceLimit()和QRhi::ShadingRateImageTileSize 查询瓦片大小。
纹理中的每个字节(纹理像素)对应一个瓦片的着色率值。0 表示 1x1,而值 10 表示 4x4。有关其他可能的值,请参阅D3D12_SHADING_RATE。
[override virtual] QRhiResource::Type QRhiShadingRateMap::resourceType() const
重写了:QRhiResource::resourceType() const。
返回资源类型。
© 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.