Enumerasi D3DPOOL

Menentukan kelas memori yang menyimpan buffer untuk sumber daya.

Sintaks

typedef enum D3DPOOL { 
  D3DPOOL_DEFAULT      = 0,
  D3DPOOL_MANAGED      = 1,
  D3DPOOL_SYSTEMMEM    = 2,
  D3DPOOL_SCRATCH      = 3,
  D3DPOOL_FORCE_DWORD  = 0x7fffffff
} D3DPOOL, *LPD3DPOOL;

Konstanta

D3DPOOL_DEFAULT

Sumber daya ditempatkan di kumpulan memori yang paling sesuai untuk serangkaian penggunaan yang diminta untuk sumber daya yang diberikan. Ini biasanya memori video, termasuk memori video lokal dan memori AGP. Kumpulan D3DPOOL_DEFAULT terpisah dari D3DPOOL_MANAGED dan D3DPOOL_SYSTEMMEM, dan menentukan bahwa sumber daya ditempatkan dalam memori pilihan untuk akses perangkat. Perhatikan bahwa D3DPOOL_DEFAULT tidak pernah menunjukkan bahwa D3DPOOL_MANAGED atau D3DPOOL_SYSTEMMEM harus dipilih sebagai jenis kumpulan memori untuk sumber daya ini. Tekstur yang ditempatkan di kumpulan D3DPOOL_DEFAULT tidak dapat dikunci kecuali teksturnya dinamis atau bersifat privat, FOURCC, format driver. Untuk mengakses tekstur yang tidak terkunci, Anda harus menggunakan fungsi seperti IDirect3DDevice9::UpdateSurface, IDirect3DDevice9::UpdateTexture, IDirect3DDevice9::GetFrontBufferData, dan IDirect3DDevice9::GetRenderTargetData. D3DPOOL_MANAGED mungkin merupakan pilihan yang lebih baik daripada D3DPOOL_DEFAULT untuk sebagian besar aplikasi. Perhatikan bahwa beberapa tekstur yang dibuat dalam format piksel milik driver, yang tidak diketahui oleh runtime Direct3D, dapat dikunci. Perhatikan juga bahwa - tidak seperti tekstur - buffer swap chain back, target render, buffer vertex, dan buffer indeks dapat dikunci. Saat perangkat hilang, sumber daya yang dibuat menggunakan D3DPOOL_DEFAULT harus dirilis sebelum memanggil IDirect3DDevice9::Reset. Untuk informasi selengkapnya, lihat Perangkat yang Hilang (Direct3D 9).

Saat membuat sumber daya dengan D3DPOOL_DEFAULT, jika memori kartu video sudah diterapkan, sumber daya terkelola akan dikeluarkan untuk mengosongkan memori yang cukup untuk memenuhi permintaan.

D3DPOOL_MANAGED

Sumber daya disalin secara otomatis ke memori yang dapat diakses perangkat sesuai kebutuhan. Sumber daya terkelola didukung oleh memori sistem dan tidak perlu dibuat ulang ketika perangkat hilang. Lihat Mengelola Sumber Daya (Direct3D 9) untuk informasi selengkapnya. Sumber daya terkelola dapat dikunci. Hanya salinan memori sistem yang langsung dimodifikasi. Direct3D menyalin perubahan Anda ke memori yang dapat diakses driver sesuai kebutuhan.

Perbedaan antara Direct3D 9 dan Direct3D 9Ex:
D3DPOOL_MANAGED valid dengan IDirect3DDevice9; namun, ini tidak valid dengan IDirect3DDevice9Ex.

 

D3DPOOL_SYSTEMMEM

Sumber daya ditempatkan dalam memori yang biasanya tidak dapat diakses oleh perangkat Direct3D. Alokasi memori ini menggunakan RAM sistem tetapi tidak mengurangi RAM yang dapat di-pageable. Sumber daya ini tidak perlu dibuat ulang ketika perangkat hilang. Sumber daya dalam kumpulan ini dapat dikunci dan dapat digunakan sebagai sumber untuk operasi IDirect3DDevice9::UpdateSurface atau IDirect3DDevice9::UpdateTexture ke sumber daya memori yang dibuat dengan D3DPOOL_DEFAULT.

D3DPOOL_SCRATCH

Sumber daya ditempatkan dalam RAM sistem dan tidak perlu dibuat ulang ketika perangkat hilang. Sumber daya ini tidak terikat oleh ukuran perangkat atau pembatasan format. Karena itu, sumber daya ini tidak dapat diakses oleh perangkat Direct3D atau ditetapkan sebagai tekstur atau target render. Namun, sumber daya ini selalu dapat dibuat, dikunci, dan disalin.

D3DPOOL_FORCE_DWORD

Memaksa enumerasi ini untuk mengkompilasi ke ukuran 32 bit. Tanpa nilai ini, beberapa pengkompilasi akan memungkinkan enumerasi ini untuk dikompilasi ke ukuran selain 32 bit. Nilai ini tidak digunakan.

Keterangan

Semua jenis kumpulan valid dengan semua sumber daya termasuk: buffer vertex, buffer indeks, tekstur, dan permukaan.

Tabel berikut menunjukkan pembatasan jenis kumpulan untuk merender target, stensil kedalaman, dan penggunaan dinamis dan mipmap. x menunjukkan kombinasi yang kompatibel; kurangnya x menunjukkan ketidakkompakan.

Kumpulan D3DUSAGE_RENDERTARGET D3DUSAGE_DEPTHSTENCIL
D3DPOOL_DEFAULT x x
D3DPOOL_MANAGED
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEM

 

Kumpulan D3DUSAGE_DYNAMIC D3DUSAGE_AUTOGENMIPMAP
D3DPOOL_DEFAULT x x
D3DPOOL_MANAGED x
D3DPOOL_SCRATCH
D3DPOOL_SYSTEMMEM x

 

Untuk informasi selengkapnya tentang jenis penggunaan, lihat D3DUSAGE.

Kumpulan tidak dapat dicampur untuk objek yang berbeda yang terkandung dalam satu sumber daya (tingkat mip dalam mipmap) dan, ketika kumpulan dipilih, itu tidak dapat diubah.

Aplikasi harus menggunakan D3DPOOL_MANAGED untuk sebagian besar sumber daya statis karena ini menghemat aplikasi dari keharusan menangani perangkat yang hilang. (Sumber daya terkelola dipulihkan oleh runtime.) Ini sangat bermanfaat untuk sistem arsitektur memori terpadu (UMA). Sumber daya dinamis lainnya tidak cocok untuk D3DPOOL_MANAGED. Bahkan, buffer indeks dan buffer vertex tidak dapat dibuat menggunakan D3DPOOL_MANAGED bersama dengan D3DUSAGE_DYNAMIC.

Untuk tekstur dinamis, terkadang diinginkan untuk menggunakan sepasang memori video dan tekstur memori sistem, mengalokasikan memori video menggunakan D3DPOOL_DEFAULT dan memori sistem menggunakan D3DPOOL_SYSTEMMEM. Anda dapat mengunci dan memodifikasi bit tekstur memori sistem menggunakan metode penguncian. Kemudian Anda dapat memperbarui tekstur memori video menggunakan IDirect3DDevice9::UpdateTexture.

Persyaratan

Persyaratan Nilai
Header
D3D9Types.h

Lihat juga

Enumerasi Direct3D

D3DUSAGE

IDirect3DDevice9::CreateCubeTexture

IDirect3DDevice9::CreateIndexBuffer

IDirect3DDevice9::CreateTexture

IDirect3DDevice9::CreateVolumeTexture

IDirect3DDevice9::CreateVertexBuffer

D3DINDEXBUFFER_DESC

D3DSURFACE_DESC

D3DVERTEXBUFFER_DESC

D3DVOLUME_DESC