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 物件的指標。
至少必須提供其中一個 pResource 或 pDesc 。 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 |