Bagikan melalui


ID3D12Device::CreateShaderResourceView metode (d3d12.h)

Membuat tampilan sumber daya shader untuk mengakses data dalam sumber daya.

Sintaks

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

Jenis: ID3D12Resource*

Penunjuk ke objek ID3D12Resource yang mewakili sumber daya shader.

Setidaknya salah satu pResource atau pDesc harus disediakan. pResource null digunakan untuk menginisialisasi deskriptor null, yang menjamin perilaku pengikatan null seperti D3D11 (membaca 0 detik, penulisan dibuang), tetapi harus memiliki pDesc yang valid untuk menentukan jenis deskriptor.

[in, optional] pDesc

Jenis: const D3D12_SHADER_RESOURCE_VIEW_DESC*

Penunjuk ke struktur D3D12_SHADER_RESOURCE_VIEW_DESC yang menjelaskan tampilan sumber daya shader.

pDesc null digunakan untuk menginisialisasi deskriptor default, jika memungkinkan. Perilaku ini identik dengan perilaku deskriptor null D3D11, di mana default diisi. Perilaku ini mewarisi format dan dimensi sumber daya (jika tidak tanpa jenis) dan untuk buffer SRV menargetkan buffer penuh dan diketik (tidak mentah atau terstruktur), dan untuk tekstur SRV menargetkan tekstur penuh, semua mips dan semua irisan array. Tidak semua sumber daya mendukung inisialisasi deskriptor null.

[in] DestDescriptor

Jenis: D3D12_CPU_DESCRIPTOR_HANDLE

Menjelaskan handel deskriptor CPU yang mewakili tampilan shader-resource. Handel ini dapat dibuat dalam tumpukan deskriptor yang terlihat shader atau non-shader.

Nilai kembali

Tidak ada

Keterangan

Memproses format video YUV 4:2:0

Aplikasi harus memetakan bidang luma (Y) secara terpisah dari bidang chroma (UV). Pengembang melakukan ini dengan memanggil CreateShaderResourceView dua kali untuk tekstur yang sama dan meneruskan format 1 saluran dan 2 saluran. Melewati format 1 saluran yang kompatibel dengan bidang Y hanya memetakan bidang Y. Meneruskan format 2 saluran yang kompatibel dengan bidang UV (bersama-sama) hanya memetakan bidang Anda dan V sebagai tampilan sumber daya tunggal.

Format YUV 4:2:0 tercantum dalam DXGI_FORMAT.

Contoh

Sampel D3D12nBodyGravity menggunakan ID3D12Device::CreateShaderResourceView sebagai berikut:

Jelaskan dan buat dua tampilan sumber daya shader berdasarkan satu deskripsi.

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

Lihat Contoh Kode dalam Referensi D3D12.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d12.h
Pustaka D3D12.lib
DLL D3D12.dll

Lihat juga

ID3D12Device