4

深度ステンシル バッファー リソースは、DXGI_FORMAT_D24_UNORM_S8_UINTformat として定義されます。


そのリソースにシェーダー リソース ビュー (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 を含む形式を使用してリソース ビューの説明を作成することはできません。ただし、ビューの型付き形式を指定することで、型のないリソースを表示できます。


型のない形式が許可されない理由と、代わりにどの形式を使用すればよいか、よくわかりません。

4

1 に答える 1