Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Performa operasi pemrosesan vertex, termasuk transformasi dan pencahayaan, sangat bergantung pada di mana buffer vertex ada dalam memori dan jenis perangkat penyajian apa yang digunakan. Aplikasi mengontrol alokasi memori untuk buffer vertex saat dibuat. Ketika bendera memori D3DPOOL_SYSTEMMEM diatur, buffer vertex dibuat dalam memori sistem. Ketika bendera memori D3DPOOL_DEFAULT digunakan, driver perangkat menentukan di mana memori untuk buffer vertex paling baik dialokasikan, sering disebut sebagai memori optimal driver. Memori optimal driver dapat berupa memori video lokal, memori video nonlokal, atau memori sistem.
Mengatur konstanta D3DUSAGE_SOFTWAREPROCESSING dengan IDirect3DDevice9::CreateVertexBuffer memungkinkan pemrosesan perangkat lunak vertex pada data vertex buffer. Parameter ini diperlukan untuk pemrosesan vertex perangkat lunak saat dalam mode campuran. Bendera mungkin tidak digunakan untuk mode pemrosesan puncak perangkat keras. Buffer verteks yang digunakan dengan pemrosesan verteks perangkat lunak termasuk berikut ini:
- Semua aliran input untuk IDirect3DDevice9::ProcessVertices.
- Semua aliran input untuk IDirect3DDevice9::DrawPrimitive dan IDirect3DDevice9::DrawIndexedPrimitive.
Penalaran yang Anda gunakan untuk menentukan lokasi memori - sistem atau driver optimal - untuk penyangga verteks sama dengan untuk tekstur. Pemrosesan vertex, termasuk transformasi dan pencahayaan, dalam perangkat keras berfungsi paling baik ketika buffer vertex dialokasikan dalam memori optimal driver, sementara pemrosesan verteks perangkat lunak berfungsi paling baik dengan buffer vertex yang dialokasikan dalam memori sistem. Untuk tekstur, rasterisasi perangkat keras berfungsi paling baik ketika tekstur dialokasikan dalam memori optimal driver, sementara rasterisasi perangkat lunak berfungsi paling baik dengan tekstur memori sistem.
Microsoft Direct3D 9 mendukung pemrosesan verteks secara mandiri, tanpa merender primitif apa pun dengan metode IDirect3DDevice9::ProcessVertices. Pemrosesan vertex mandiri ini selalu dilakukan dalam perangkat lunak pada prosesor host. Karena itu, buffer vertex yang digunakan sebagai sumber yang diatur dengan IDirect3DDevice9::SetStreamSource harus dibuat dengan flag D3DUSAGE_SOFTWAREPROCESSING. Fungsionalitas yang disediakan oleh IDirect3DDevice9::ProcessVertices identik dengan metode IDirect3DDevice9::DrawPrimitive dan IDirect3DDevice9::DrawIndexedPrimitive saat menggunakan pemrosesan vertex dengan perangkat lunak.
Jika aplikasi Anda melakukan pemrosesan vertex sendiri dan meneruskan vertex yang telah diubah, diterangi, dan dipotong ke metode penyajian, maka aplikasi dapat langsung menulis vertex ke buffer vertex yang dialokasikan dalam memori yang optimal untuk driver. Teknik ini mencegah operasi salinan redundan nanti. Perhatikan bahwa metode ini tidak akan berkinerja baik jika aplikasi Anda membaca data kembali dari buffer vertex, karena operasi baca yang dilakukan oleh host dari memori yang dioptimalkan oleh driver dapat sangat lambat. Oleh karena itu, jika aplikasi Anda perlu membaca selama pemrosesan atau menulis data ke buffer secara erratis, buffer vertex memori sistem adalah pilihan yang lebih baik.
Saat menggunakan fitur pemrosesan vertex Direct3D (dengan meneruskan simpul yang tidak ditransformasi ke metode penyajian buffer vertex), pemrosesan dapat terjadi di perangkat keras atau perangkat lunak tergantung pada jenis perangkat dan bendera pembuatan perangkat. Disarankan agar buffer vertex dialokasikan di kumpulan D3DPOOL_DEFAULT untuk performa terbaik di hampir semua kasus. Saat perangkat menggunakan pemrosesan puncak perangkat keras, ada sejumlah pengoptimalan tambahan yang dapat dilakukan berdasarkan bendera D3DUSAGE_DYNAMIC dan D3DUSAGE_WRITEONLY. Lihat IDirect3DDevice9::CreateVertexBuffer untuk informasi selengkapnya tentang menggunakan bendera ini.
Topik terkait