Buffer Puncak (Direct3D 9)

Buffer vertex, yang diwakili oleh antarmuka IDirect3DVertexBuffer9 , adalah buffer memori yang berisi data vertex. Buffer vertex dapat berisi jenis vertex apa pun - diubah atau tidak ditransformasi, dinyalakan atau tidak menyala - yang dapat dirender melalui penggunaan metode penyajian di antarmuka IDirect3DDevice9 . Anda dapat memproses simpul dalam buffer puncak untuk melakukan operasi seperti transformasi, pencahayaan, atau menghasilkan bendera kliping. Transformasi selalu dilakukan.

Fleksibilitas buffer vertex menjadikannya titik pementasan yang ideal untuk menggunakan kembali geometri yang diubah. Anda dapat membuat buffer vertex tunggal, mengubah, menyala, dan mengklip simpul di dalamnya, dan merender model dalam adegan sebanyak yang diperlukan tanpa mengubahnya kembali, bahkan dengan perubahan status render yang saling terkait. Ini berguna saat merender model yang menggunakan beberapa tekstur: geometri hanya diubah sekali, dan kemudian bagiannya dapat dirender sesuai kebutuhan, diselingi dengan perubahan tekstur yang diperlukan. Merender perubahan status yang dilakukan setelah simpul diproses berlaku saat puncak diproses lain kali.

Deskripsi

Buffer vertex dijelaskan dalam hal kemampuannya: jika hanya dapat ada dalam memori sistem, jika hanya digunakan untuk operasi tulis, dan jenis dan jumlah simpul yang dapat dikandungnya. Semua sifat ini diadakan dalam struktur D3DVERTEXBUFFER_DESC .

Anggota Format diatur ke D3DFMT_VERTEXDATA untuk menunjukkan bahwa ini adalah buffer vertex. Jenis mengidentifikasi jenis sumber daya buffer vertex. Anggota struktur Penggunaan berisi bendera kemampuan umum. Bendera D3DUSAGE_SOFTWAREPROCESSING menunjukkan bahwa buffer puncak akan digunakan dengan pemrosesan verteks perangkat lunak. Kehadiran bendera D3DUSAGE_WRITEONLY dalam Penggunaan menunjukkan bahwa memori buffer vertex hanya digunakan untuk operasi tulis. Ini membebaskan driver untuk menempatkan data puncak di lokasi memori terbaik untuk memungkinkan pemrosesan dan penyajian yang cepat. Jika bendera D3DUSAGE_WRITEONLY tidak digunakan, driver cenderung tidak menempatkan data di lokasi yang tidak efisien untuk operasi baca. Ini mengorbankan beberapa kecepatan pemrosesan dan penyajian. Jika bendera ini tidak ditentukan, diasumsikan bahwa aplikasi melakukan operasi baca dan tulis pada data dalam buffer vertex.

Kumpulan menentukan kelas memori yang dialokasikan untuk buffer vertex. Bendera D3DPOOL_SYSTEMMEM menunjukkan bahwa sistem membuat buffer vertex dalam memori sistem.

Anggota Ukuran menyimpan ukuran, dalam byte, dari data buffer vertex. Anggota FVF berisi kombinasi D3DFVF yang mengidentifikasi jenis simpul yang dikandung buffer.

Kumpulan Memori dan Penggunaan

Anda dapat membuat buffer vertex dengan metode IDirect3DDevice9::CreateVertexBuffer , yang mengambil kumpulan (kelas memori) dan parameter penggunaan. IDirect3DDevice9::CreateVertexBuffer juga dapat dibuat dengan kode FVF tertentu untuk digunakan dalam pemrosesan vertex fungsi tetap, atau sebagai output simpul proses. Untuk detailnya, lihat Buffer Vertex FVF (Direct3D 9).

Bendera D3DUSAGE_SOFTWAREPROCESSING dapat diatur ketika mode campuran atau pemrosesan puncak perangkat lunak (D3DCREATE_MIXED_VERTEXPROCESSING / D3DCREATE_SOFTWARE_VERTEXPROCESSING) diaktifkan untuk perangkat tersebut. D3DUSAGE_SOFTWAREPROCESSING harus diatur agar buffer dapat digunakan dengan pemrosesan puncak perangkat lunak dalam mode campuran, tetapi tidak boleh diatur untuk performa terbaik saat menggunakan pemrosesan vertex perangkat keras dalam mode campuran. (D3DCREATE_HARDWARE_VERTEXPROCESSING). Namun, mengatur D3DUSAGE_SOFTWAREPROCESSING adalah satu-satunya opsi ketika satu buffer adalah digunakan dengan pemrosesan verteks perangkat keras dan perangkat lunak. D3DUSAGE_SOFTWAREPROCESSING diperbolehkan untuk campuran serta untuk perangkat lunak.

Dimungkinkan untuk memaksa buffer verteks dan indeks ke dalam memori sistem dengan menentukan D3DPOOL_SYSTEMMEM, bahkan ketika pemrosesan puncak dilakukan dalam perangkat keras. Ini adalah cara untuk menghindari memori yang dikunci halaman dalam jumlah besar ketika driver memasukkan buffer ini ke dalam memori AGP.

Bagian ini memperkenalkan konsep yang diperlukan untuk memahami dan menggunakan buffer vertex dalam aplikasi Direct3D. Informasi dibagi menjadi bagian berikut.

Sumber Daya Direct3D

Penyajian dari Vertex dan Buffer Indeks (Direct3D 9)

Buffer Indeks (Direct3D 9)