深度ステンシル バッファー リソースは、DXGI_FORMAT_D24_UNORM_S8_UINT
format として定義されます。
そのリソースにシェーダー リソース ビュー (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 を含む形式を使用してリソース ビューの説明を作成することはできません。ただし、ビューの型付き形式を指定することで、型のないリソースを表示できます。
型のない形式が許可されない理由と、代わりにどの形式を使用すればよいか、よくわかりません。