深度模板缓冲区资源定义为DXGI_FORMAT_D24_UNORM_S8_UINT格式。
我假设要将着色器资源视图(SRV)创建到该资源中,需要将视图格式描述为:
DXGI_FORMAT_R24_UNORM_X8_TYPELESS,其中红色通道访问深度值DXGI_FORMAT_R24G8_TYPELESS红色通道访问深度和绿色通道模板值但是,创建这样的SRV失败时会出现以下错误:
D3D12错误: ID3D12Device::CreateShaderResourceView:对于资源格式D24_UNORM_S8_UINT,当生成D3D视图时,视图的格式名称不能是R24_UNORM_X8_TYPELESS。请参阅此资源格式的有效视图格式名称集的文档,确定该资源(或其一部分)将如何显示到着色器。STATE_CREATION错误#28: CREATESHADERRESOURCEVIEW_INVALIDFORMAT
通过查看API文档,我获得了以下信息:
查看资源时,资源视图描述必须指定与资源格式兼容的类型化格式。因此,这意味着不能使用名称中的任何_TYPELESS格式创建资源视图描述。但是,可以通过为视图指定类型化格式来查看无类型资源。
我真的不明白为什么不允许使用无类型格式,我应该使用哪种格式来代替
发布于 2016-08-13 23:24:55
相反,您使用无类型组件创建资源,并在视图中使用所需的最终表示形式专门化资源。由于您已经给了资源模板一个uint表示,所以您将继续使用它。
https://stackoverflow.com/questions/38933565
复制相似问题