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 物件的指標。

至少必須提供其中一個 pResourcepDesc 。 null pResource 是用來初始化 null 描述元,其保證讀取 0s (類似 D3D11 的 Null 系結行為,寫入會捨棄) ,但必須有有效的 pDesc 才能判斷描述元類型。

[in, optional] pDesc

類型: const D3D12_SHADER_RESOURCE_VIEW_DESC*

描述著色器資源檢視 之D3D12_SHADER_RESOURCE_VIEW_DESC 結構的指標。

如果可能的話,會使用 null pDesc 初始化預設描述元。 此行為與填入預設值的 D3D11 Null 描述元行為相同。 此行為會繼承資源格式和維度 (如果不是無類型) ,而且針對緩衝區,SRV 是以完整緩衝區為目標,且類型 (不是原始或結構化) ,而針對紋理 SRV 則以完整紋理、所有 mips 和所有數位配量為目標。 並非所有資源都支援 Null 描述元初始化。

[in] DestDescriptor

類型: D3D12_CPU_DESCRIPTOR_HANDLE

描述代表著色器資源檢視的CPU描述元句柄。 這個句柄可以在著色器可見或非著色器可見描述元堆積中建立。

傳回值

備註

處理 YUV 4:2:0 視訊格式

應用程式必須將 luma (Y) 平面與色 (UV) 平面分開。 開發人員藉由針對相同的紋理呼叫 CreateShaderResourceView 兩次,並傳入 1 通道和 2 通道格式來執行此動作。 傳入與 Y 平面相容的 1 通道格式,只對應 Y 平面。 傳入與UV平面相容的2通道格式, () 僅將您和 V 平面對應為單一資源檢視。

YUV 4:2:0 格式列於 DXGI_FORMAT

範例

D3D12nBodyGravity 範例使用 ID3D12Device::CreateShaderResourceView,如下所示:

根據一個描述描述描述並建立兩個著色器資源檢視。

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
程式庫 D3D12.lib
Dll D3D12.dll

另請參閱

ID3D12Device