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);

「D3D12 リファレンス」のコード例を参照してください

要件

要件
対象プラットフォーム Windows
ヘッダー d3d12.h
Library D3D12.lib
[DLL] D3D12.dll

こちらもご覧ください

ID3D12Device