QRhiShadingRateMap Class

用于封装纹理或其他本地 3D API 对象的对象。更多

头文件: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
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,还支持与 Metal 有点不同的机制。

成员函数文档

[virtual] bool QRhiShadingRateMap::createFrom(QRhiShadingRateMap::NativeShadingRateMap src)

设置着色速率映射,以使用本地 3D API 着色速率对象src

成功时返回true ,不支持时返回false

注意: 只有在报告支持QRhi::VariableRateShadingMap 功能,而不支持 QRhi::VariableShadingRateMapWithTexture 功能时,此功能才会起作用。目前,假设 GPU 支持可变着色速率,则对于 Metal 来说,这一点是正确的。

注意: 对于 Metal,srcobject 字段应包含 id<MTLRasterizationRateMap>。请注意,除了将 MTLRasterizationRateMap 传递给 MTLRenderPassDescriptor 外,Qt 不会执行任何其他操作。如果需要任何特殊的缩放,则由应用程序(或 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 查询。

纹理中的每个字节(texel)对应一个色块的着色率值。0 表示 1x1,10 表示 4x4。其他可能的值请参见D3D12_SHADING_RATE

[override virtual] QRhiResource::Type QRhiShadingRateMap::resourceType() const

重实现:QRhiResource::resourceType() 常量。

返回资源类型。

© 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.