METODE ID3D12Device::CreateDescriptorHeap (d3d12.h)
Membuat objek timbunan deskriptor.
Sintaks
HRESULT CreateDescriptorHeap(
[in] const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
REFIID riid,
[out] void **ppvHeap
);
Parameter
[in] pDescriptorHeapDesc
Jenis: const D3D12_DESCRIPTOR_HEAP_DESC*
Penunjuk ke struktur D3D12_DESCRIPTOR_HEAP_DESC yang menjelaskan timbunan.
riid
Jenis: REFIID
Pengidentifikasi unik global (GUID) untuk antarmuka timbunan deskriptor. Lihat Keterangan. Parameter input.
[out] ppvHeap
Jenis: batal**
Penunjuk ke blok memori yang menerima penunjuk ke timbunan deskriptor. ppvHeap dapat berupa NULL, untuk mengaktifkan pengujian kemampuan. Ketika ppvHeap adalah NULL, tidak ada objek yang akan dibuat dan S_FALSE akan dikembalikan ketika pDescriptorHeapDesc valid.
Nilai kembali
Jenis: HRESULT
Metode ini mengembalikan E_OUTOFMEMORY jika memori tidak cukup untuk membuat objek heap deskriptor. Lihat Kode Pengembalian Direct3D 12 untuk kemungkinan nilai pengembalian lainnya.
Keterangan
REFIID, atau GUID, antarmuka ke timbunan deskriptor dapat diperoleh dengan menggunakan makro __uuidof(). Misalnya, __uuidof(ID3D12DescriptorHeap) akan mendapatkan GUID antarmuka ke tumpukan deskriptor.
Contoh
Sampel D3D12HelloWorld menggunakan ID3D12Device::CreateDescriptorHeap sebagai berikut:
Menjelaskan dan membuat timbunan deskriptor tampilan target render (RTV).
// Create descriptor heaps.
{
// Describe and create a render target view (RTV) descriptor heap.
D3D12_DESCRIPTOR_HEAP_DESC rtvHeapDesc = {};
rtvHeapDesc.NumDescriptors = FrameCount;
rtvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
rtvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
ThrowIfFailed(m_device->CreateDescriptorHeap(&rtvHeapDesc, IID_PPV_ARGS(&m_rtvHeap)));
m_rtvDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
}
// Create frame resources.
{
CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart());
// Create a RTV for each frame.
for (UINT n = 0; n < FrameCount; n++)
{
ThrowIfFailed(m_swapChain->GetBuffer(n, IID_PPV_ARGS(&m_renderTargets[n])));
m_device->CreateRenderTargetView(m_renderTargets[n].Get(), nullptr, rtvHandle);
rtvHandle.Offset(1, m_rtvDescriptorSize);
}
Lihat Contoh Kode dalam Referensi D3D12.
Persyaratan
Target Platform | Windows |
Header | d3d12.h |
Pustaka | D3D12.lib |
DLL | D3D12.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk