ID3D12Device::CreateShaderResourceView メソッド (d3d12.h)
リソース内のデータにアクセスするためのシェーダー リソース ビューを作成します。
構文
void CreateShaderResourceView(
[in, optional] ID3D12Resource *pResource,
[in, optional] const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
[in] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
);
パラメーター
[in, optional] pResource
種類: ID3D12Resource*
シェーダー リソースを表す ID3D12Resource オブジェクトへのポインター。
少なくとも 1 つの pResource または pDesc を指定する必要があります。 null pResource を使用して null 記述子を初期化します。これにより、D3D11 のような null バインディング動作が保証されますが (読み取り 0s、書き込みは破棄されます)、記述子の種類を決定するには有効な pDesc が必要です。
[in, optional] pDesc
型: const D3D12_SHADER_RESOURCE_VIEW_DESC*
シェーダー リソース ビューを記述する D3D12_SHADER_RESOURCE_VIEW_DESC 構造体へのポインター。
可能であれば、null pDesc を使用して既定の記述子を初期化します。 この動作は、D3D11 null 記述子の動作と同じです。この動作では、既定値が入力されます。 この動作は、リソースの形式とディメンション (型指定されていない場合) を継承し、バッファーの場合は完全なバッファーをターゲットとし、型指定されます (未加工または構造化ではありません)。テクスチャの場合、SRV は完全なテクスチャ、すべての mips、およびすべての配列スライスを対象とします。 すべてのリソースが null 記述子の初期化をサポートしているわけではありません。
[in] DestDescriptor
種類: D3D12_CPU_DESCRIPTOR_HANDLE
シェーダー リソース ビューを表す CPU 記述子ハンドルについて説明します。 このハンドルは、シェーダーに表示される記述子ヒープまたはシェーダーに表示されない記述子ヒープに作成できます。
戻り値
なし
解説
YUV 4:2:0 ビデオ形式の処理
アプリは、彩度 (UV) 平面とは別にルマ (Y) 平面をマップする必要があります。 開発者はこれを行うには、同じテクスチャに対して CreateShaderResourceView を 2 回呼び出し、1 チャネル形式と 2 チャネル形式を渡します。 Y 平面と互換性のある 1 チャネル形式を渡すと、Y 平面のみがマップされます。 UV 平面と互換性のある 2 チャネル形式を渡すと(一緒に)、単一のリソース ビューとしてあなたと V 平面のみがマップされます。YUV 4:2:0 形式は 、DXGI_FORMATに記載されています。
例
D3D12nBodyGravity サンプルでは、次のように ID3D12Device::CreateShaderResourceView を使用します。
1 つの説明に基づいて 2 つのシェーダー リソース ビューを記述して作成します。
D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
srvDesc.Format = DXGI_FORMAT_UNKNOWN;
srvDesc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
srvDesc.Buffer.FirstElement = 0;
srvDesc.Buffer.NumElements = ParticleCount;
srvDesc.Buffer.StructureByteStride = sizeof(Particle);
srvDesc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle0(m_srvUavHeap->GetCPUDescriptorHandleForHeapStart(), SrvParticlePosVelo0 + index, m_srvUavDescriptorSize);
CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle1(m_srvUavHeap->GetCPUDescriptorHandleForHeapStart(), SrvParticlePosVelo1 + index, m_srvUavDescriptorSize);
m_device->CreateShaderResourceView(m_particleBuffer0[index].Get(), &srvDesc, srvHandle0);
m_device->CreateShaderResourceView(m_particleBuffer1[index].Get(), &srvDesc, srvHandle1);
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d12.h |
Library | D3D12.lib |
[DLL] | D3D12.dll |