Mengelola Sumber Daya (Direct3D 9)

Manajemen sumber daya adalah proses di mana sumber daya dipromosikan dari penyimpanan memori sistem ke penyimpanan yang dapat diakses perangkat dan dibuang dari penyimpanan yang dapat diakses perangkat. Run time Direct3D memiliki algoritma manajemennya sendiri berdasarkan teknik prioritas yang paling tidak baru-baru ini digunakan. Direct3D beralih ke teknik prioritas yang terakhir digunakan ketika mendeteksi bahwa lebih banyak sumber daya daripada yang dapat hidup berdampingan dalam memori yang dapat diakses perangkat digunakan dalam satu bingkai - antara panggilan IDirect3DDevice9::BeginScene dan IDirect3DDevice9::EndScene .

Gunakan bendera D3DPOOL_DEFAULT pada waktu pembuatan untuk menentukan bahwa 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 port grafis yang dipercepat (AGP). Sumber daya di kumpulan default tidak bertahan melalui transisi antara status perangkat yang hilang dan operasional. Sumber daya ini harus dirilis sebelum memanggil reset dan kemudian harus dibuat ulang.

Gunakan bendera D3DPOOL_MANAGED pada waktu pembuatan untuk menentukan sumber daya terkelola. Sumber daya terkelola bertahan melalui transisi antara status perangkat yang hilang dan operasional. Sumber daya ini ada dalam memori video dan sistem. Sumber daya terkelola akan disalin ke dalam memori video saat diperlukan selama penyajian. Perangkat dapat dipulihkan dengan panggilan ke IDirect3DDevice9::Reset, dan sumber daya tersebut terus berfungsi secara normal tanpa dimuat ulang dengan data. Namun, jika perangkat harus dihancurkan dan dibuat ulang, semua sumber daya harus dibuat ulang.

Manajemen sumber daya tidak disarankan untuk sumber daya yang berubah dengan frekuensi tinggi. Misalnya, buffer vertex dan indeks yang digunakan untuk melintasi grafik adegan setiap bingkai yang hanya merender geometri yang terlihat oleh pengguna mengubah setiap bingkai. Karena sumber daya terkelola didukung oleh memori sistem, perubahan konstanta harus diperbarui dalam memori sistem, yang dapat menyebabkan penurunan performa yang parah. Untuk skenario khusus ini, D3DPOOL_DEFAULT bersama dengan D3DUSAGE_DYNAMIC harus digunakan.

Contoh lain di mana manajemen sumber daya tidak disarankan (dan secara eksplisit tidak diizinkan oleh runtime) adalah manajemen tekstur yang dibuat dengan D3DUSAGE_RENDERTARGET. Jika memori yang digunakan oleh target render dikelola oleh runtime, kontennya harus terus-menerus disalin ke memori sistem selama penyajian, menyebabkan penalti performa besar. Untuk alasan ini, target render harus dibuat di kumpulan default. Jika akses CPU data yang terkandung dalam target render diperlukan, data harus disalin ke sumber daya yang dibuat di D3DPOOL_SYSTEMMEM menggunakan IDirect3DDevice9::UpdateTexture, atau IDirect3DDevice9::UpdateSurface

Untuk informasi selengkapnya tentang status perangkat yang hilang, lihat Perangkat hilang (Direct3D 9).

Sumber Daya Direct3D