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 |