在directX:格式化中有多种纹理格式
大多数都很清楚,但是什么是“无类型”纹理呢?例如,对于BC6H,有
DXGI_FORMAT_BC6H_TYPELESS,
DXGI_FORMAT_BC6H_UF16,
DXGI_FORMAT_BC6H_SF16,UF16是无符号浮点数,SF16是有符号浮点数,至少编码器是https://learn.microsoft.com/en-us/windows/win32/direct3d11/bc6h-format (也许解码器也是?)似乎关心的格式是签名还是无签名。
但是什么是“无型”呢?这样的纹理是如何编码和解码的?
发布于 2020-09-21 19:03:19
DXGI格式的“无类型”变体适用于特殊情况,在这种情况下,可以更改数据的解释方式。这允许您为硬件创建具有正确内存布局(即使用_TYPELESS格式)的资源(即实际的“位包”),然后可以使用所需的特定类型创建多个视图对象。这有效地允许您在有限的情况下执行等效的"C++强制转换“。
使用无类型的最常见的情况是处理深度/模板格式,对着色器进行RGB处理,在DirectCompute中实现BC编解码器。这不是您经常使用的东西,但是当您选择放松类型验证时,就会派上用场了。
有关使用无类型DXGI格式的一些示例,请参见AdaptiveTessellationCS40,BasicCompute11,CascadedShadowMaps11,MultithreadedRendering11,和VarianceShadows11.的directx-sdk-样本 GitHub。
对于Xbox开发,还有几种情况
_TYPELESS会派上用场,因为它是一种统一内存访问( Unified,UMA)体系结构,但这会扭曲“股票”Direct3D的验证规则。
https://stackoverflow.com/questions/63988220
复制相似问题