Freigeben über


ID3D12Device::CreateShaderResourceView-Methode (d3d12.h)

Erstellt eine Shaderressourcenansicht für den Zugriff auf Daten in einer Ressource.

Syntax

void CreateShaderResourceView(
  [in, optional] ID3D12Resource                        *pResource,
  [in, optional] const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
  [in]           D3D12_CPU_DESCRIPTOR_HANDLE           DestDescriptor
);

Parameter

[in, optional] pResource

Typ: ID3D12Resource*

Ein Zeiger auf das ID3D12Resource-Objekt , das die Shaderressource darstellt.

Mindestens eine von pResource oder pDesc muss bereitgestellt werden. Eine Null-pResource wird verwendet, um einen NULL-Deskriptor zu initialisieren, der ein D3D11-ähnliches NULL-Bindungsverhalten garantiert (Lesevorgänge 0, Schreibvorgänge werden verworfen), muss jedoch über einen gültigen pDesc verfügen, um den Deskriptortyp zu bestimmen.

[in, optional] pDesc

Typ: const D3D12_SHADER_RESOURCE_VIEW_DESC*

Ein Zeiger auf eine D3D12_SHADER_RESOURCE_VIEW_DESC-Struktur , die die Shader-Ressourcenansicht beschreibt.

Ein NULL-pDesc wird verwendet, um nach Möglichkeit einen Standarddeskriptor zu initialisieren. Dieses Verhalten ist identisch mit dem D3D11-NULL-Deskriptorverhalten, bei dem Standardwerte ausgefüllt werden. Dieses Verhalten erbt das Ressourcenformat und die Dimension (sofern nicht typlos), und für Puffer zielen SRVs auf einen vollständigen Puffer und sind typisiert (nicht roh oder strukturiert), und für Texturen zielen SRVs auf eine vollständige Textur, alle Mips und alle Arrayslices ab. Nicht alle Ressourcen unterstützen die NULL-Deskriptorinitialisierung.

[in] DestDescriptor

Typ: D3D12_CPU_DESCRIPTOR_HANDLE

Beschreibt das CPU-Deskriptorhandle, das die Shaderressourcenansicht darstellt. Dieses Handle kann in einem Shader-Visible- oder non-shader-visible-Deskriptorheap erstellt werden.

Rückgabewert

Keine

Bemerkungen

Verarbeiten von YUV 4:2:0-Videoformaten

Eine App muss die Lumaebene (Y) getrennt von den Chromaebenen (UV) zuordnen. Entwickler tun dies, indem sie CreateShaderResourceView zweimal für dieselbe Textur aufrufen und 1-Kanal- und 2-Kanal-Formate übergeben. Durch Übergeben eines 1-Kanal-Formats, das mit der Y-Ebene kompatibel ist, wird nur die Y-Ebene zugeordnet. Durch Übergeben eines 2-Kanal-Formats, das mit den UV-Ebenen (zusammen) kompatibel ist, werden nur die Sie- und V-Ebenen als einzelne Ressourcenansicht zugeordnet.

YUV 4:2:0-Formate sind in DXGI_FORMAT aufgeführt.

Beispiele

Im D3D12nBodyGravity-Beispiel wird ID3D12Device::CreateShaderResourceView wie folgt verwendet:

Beschreiben und erstellen Sie zwei Shaderressourcensichten basierend auf einer Beschreibung.

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

Weitere Informationen finden Sie im Beispielcode in der D3D12-Referenz.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d12.h
Bibliothek D3D12.lib
DLL D3D12.dll

Weitere Informationen

ID3D12Device