METODE ID3D12Device::CreateCommittedResource (d3d12.h)
Membuat sumber daya dan tumpukan implisit, sehingga tumpukan cukup besar untuk memuat seluruh sumber daya, dan sumber daya dipetakan ke tumpukan.
Sintaks
HRESULT CreateCommittedResource(
[in] const D3D12_HEAP_PROPERTIES *pHeapProperties,
[in] D3D12_HEAP_FLAGS HeapFlags,
[in] const D3D12_RESOURCE_DESC *pDesc,
[in] D3D12_RESOURCE_STATES InitialResourceState,
[in, optional] const D3D12_CLEAR_VALUE *pOptimizedClearValue,
[in] REFIID riidResource,
[out, optional] void **ppvResource
);
Parameter
[in] pHeapProperties
Jenis: const D3D12_HEAP_PROPERTIES*
Penunjuk ke struktur D3D12_HEAP_PROPERTIES yang menyediakan properti untuk timbunan sumber daya.
[in] HeapFlags
Jenis: D3D12_HEAP_FLAGS
Opsi heap, sebagai kombinasi bitwise-OR dari konstanta enumerasi D3D12_HEAP_FLAGS .
[in] pDesc
Jenis: const D3D12_RESOURCE_DESC*
Penunjuk ke struktur D3D12_RESOURCE_DESC yang menjelaskan sumber daya.
[in] InitialResourceState
Jenis: D3D12_RESOURCE_STATES
Status awal sumber daya, sebagai kombinasi bitwise-OR dari konstanta enumerasi D3D12_RESOURCE_STATES .
Saat membuat sumber daya bersama dengan tumpukan D3D12_HEAP_TYPE_UPLOAD , Anda harus mengatur InitialResourceState ke D3D12_RESOURCE_STATE_GENERIC_READ.
Saat membuat sumber daya bersama dengan tumpukan D3D12_HEAP_TYPE_READBACK , Anda harus mengatur InitialResourceState ke D3D12_RESOURCE_STATE_COPY_DEST.
[in, optional] pOptimizedClearValue
Jenis: const D3D12_CLEAR_VALUE*
Menentukan struktur D3D12_CLEAR_VALUE yang menjelaskan nilai default untuk warna yang jelas.
pOptimizedClearValue menentukan nilai yang operasinya jelas paling optimal. Ketika sumber daya yang dibuat adalah tekstur dengan bendera D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET atau D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL , Anda harus memilih nilai yang paling sering disebut operasi yang jelas. Anda dapat memanggil operasi yang jelas dengan nilai lain, tetapi operasi tersebut tidak akan seefisien ketika nilai cocok dengan yang diteruskan ke pembuatan sumber daya.
Saat Anda menggunakan D3D12_RESOURCE_DIMENSION_BUFFER, Anda harus mengatur pOptimizedClearValue ke nullptr
.
[in] riidResource
Jenis: REFIID
Referensi ke pengidentifikasi unik global (GUID) antarmuka sumber daya untuk kembali di ppvResource.
Meskipun riidResource paling umum adalah GUIDID3D12Resource, ini mungkin GUID antarmuka apa pun. Jika objek sumber daya tidak mendukung antarmuka untuk GUID ini, pembuatan gagal dengan E_NOINTERFACE.
[out, optional] ppvResource
Jenis: void**
Penunjuk opsional ke blok memori yang menerima penunjuk antarmuka yang diminta ke objek sumber daya yang dibuat.
ppvResource dapat berupa nullptr
, untuk mengaktifkan pengujian kemampuan. Ketika ppvResource adalah nullptr
, tidak ada objek yang dibuat, dan S_FALSE dikembalikan ketika pDesc valid.
Menampilkan nilai
Jenis: HRESULT
Jika fungsi berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahanHRESULT akan dikembalikan.
Mengembalikan nilai | Deskripsi |
---|---|
E_OUTOFMEMORY | Memori tidak cukup untuk membuat sumber daya. |
Lihat Kode pengembalian Direct3D 12 untuk kemungkinan nilai pengembalian lainnya.
Keterangan
Metode ini membuat sumber daya dan timbunan, sehingga timbunan cukup besar untuk memuat seluruh sumber daya, dan sumber daya dipetakan ke tumpuk. Tumpukan yang dibuat dikenal sebagai tumpukan implisit, karena objek heap tidak dapat diperoleh oleh aplikasi. Sebelum merilis referensi akhir pada sumber daya, aplikasi Anda harus memastikan bahwa GPU tidak akan lagi membaca atau menulis ke sumber daya ini.
Tumpukan implisit dibuat residen untuk akses GPU sebelum metode mengembalikan kontrol ke aplikasi Anda. Lihat juga Residensi.
Pemetaan VA GPU sumber daya tidak dapat diubah. Lihat ID3D12CommandQueue::UpdateTileMappings dan Sumber daya ubin Volume.
Metode ini dapat dipanggil oleh beberapa utas secara bersamaan.
Contoh
Sampel D3D12Bundles menggunakan ID3D12Device::CreateCommittedResource sebagai berikut:
Buat buffer vertex.
auto heapProperties = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT);
auto resourceDesc = CD3DX12_RESOURCE_DESC::Buffer(SampleAssets::VertexDataSize);
ThrowIfFailed(m_device->CreateCommittedResource(
&heapProperties,
D3D12_HEAP_FLAG_NONE,
&resourceDesc,
D3D12_RESOURCE_STATE_COPY_DEST,
nullptr,
IID_PPV_ARGS(&m_vertexBuffer)));
Lihat Contoh kode dalam referensi Direct3D 12.
Persyaratan
Persyaratan | Nilai |
---|---|
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