Metode IDirect3DDevice9::CreateVertexBuffer (d3d9helper.h)
Membuat buffer vertex.
Sintaks
HRESULT CreateVertexBuffer(
[in] UINT Length,
[in] DWORD Usage,
[in] DWORD FVF,
[in] D3DPOOL Pool,
[out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
[in] HANDLE *pSharedHandle
);
Parameter
[in] Length
Jenis: UINT
Ukuran buffer vertex, dalam byte. Untuk buffer vertex FVF, Panjang harus cukup besar untuk mengandung setidaknya satu puncak, tetapi tidak perlu kelipatan ukuran puncak. Panjang tidak divalidasi untuk buffer non-FVF. Lihat Keterangan.
[in] Usage
Jenis: DWORD
Penggunaan bisa 0, yang menunjukkan tidak ada nilai penggunaan. Namun, jika penggunaan diinginkan, gunakan kombinasi satu atau beberapa D3DUSAGE konstanta. Adalah praktik yang baik untuk mencocokkan parameter penggunaan di CreateVertexBuffer dengan bendera perilaku di IDirect3D9::CreateDevice. Untuk informasi selengkapnya, lihat Keterangan.
[in] FVF
Jenis: DWORD
Kombinasi D3DFVF, penentu penggunaan yang menjelaskan format puncak simpul dalam buffer ini. Jika parameter ini diatur ke kode FVF yang valid, buffer vertex yang dibuat adalah buffer vertex FVF (lihat Remarks). Jika tidak, jika parameter ini diatur ke nol, buffer vertex adalah buffer vertex non-FVF.
[in] Pool
Jenis: D3DPOOL
Anggota jenis D3DPOOL yang dijumlahkan, menjelaskan kelas memori yang valid untuk menempatkan sumber daya. Jangan atur ke D3DPOOL_SCRATCH.
[out, retval] ppVertexBuffer
Jenis: IDirect3DVertexBuffer9**
Alamat penunjuk ke antarmuka IDirect3DVertexBuffer9 , mewakili sumber daya buffer vertex yang dibuat.
[in] pSharedHandle
Jenis: HANDEL*
Dicadangkan. Atur parameter ini ke NULL. Parameter ini dapat digunakan di Direct3D 9 untuk Windows Vista untuk berbagi sumber daya.
Mengembalikan nilai
Jenis: HRESULT
Jika metode berhasil, nilai yang dikembalikan adalah D3D_OK. Jika metode gagal, nilai yang dikembalikan dapat menjadi salah satu dari yang berikut: D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.
Keterangan
Buffer vertex dapat digunakan dengan pemrosesan vertex perangkat keras atau perangkat lunak. Ini ditentukan oleh bagaimana perangkat dan buffer vertex dibuat.
Saat perangkat dibuat, CreateDevice menggunakan bendera perilaku untuk menentukan apakah akan memproses simpul dalam perangkat keras atau perangkat lunak. Ada tiga kemungkinan:
- Proses simpul dalam perangkat keras dengan mengatur D3DCREATE_HARDWARE_VERTEXPROCESSING.
- Proses simpul dalam perangkat lunak dengan mengatur D3DCREATE_SOFTWARE_VERTEXPROCESSING.
- Proses simpul di perangkat keras atau perangkat lunak dengan mengatur D3DCREATE_MIXED_VERTEXPROCESSING.
Saat buffer vertex dibuat, CreateVertexBuffer menggunakan parameter penggunaan untuk memutuskan apakah akan memproses simpul dalam perangkat keras atau perangkat lunak.
- Jika CreateDevice menggunakan D3DCREATE_HARDWARE_VERTEXPROCESSING, CreateVertexBuffer harus menggunakan 0.
- Jika CreateDevice menggunakan D3DCREATE_SOFTWARE_VERTEXPROCESSING, CreateVertexBuffer harus menggunakan 0 atau D3DUSAGE_SOFTWAREPROCESSING. Untuk salah satu nilai, simpul akan diproses dalam perangkat lunak.
- Jika CreateDevice menggunakan D3DCREATE_MIXED_VERTEXPROCESSING, CreateVertexBuffer dapat menggunakan 0 atau D3DUSAGE_SOFTWAREPROCESSING.
Antarmuka IDirect3DDevice9 mendukung penyajian primitif menggunakan data vertex yang disimpan dalam objek buffer vertex. Buffer vertex dibuat dari IDirect3DDevice9, dan hanya dapat digunakan dengan objek IDirect3DDevice9 tempat mereka dibuat.
Ketika diatur ke nilai bukan nol, yang harus berupa kode FVF yang valid, parameter FVF menunjukkan bahwa konten buffer akan ditandai dengan kode FVF. Buffer vertex yang dibuat dengan kode FVF disebut sebagai buffer vertex FVF. Untuk informasi selengkapnya, lihat Buffer Vertex FVF (Direct3D 9).
Buffer non-FVF dapat digunakan untuk menjalin data selama penyajian multipass atau penyajian multitekstur dalam satu pass. Untuk melakukan ini, satu buffer berisi data geometri dan yang lain berisi koordinat tekstur untuk setiap tekstur yang akan dirender. Saat penyajian, buffer yang berisi data geometri diselingi dengan setiap buffer yang berisi koordinat tekstur. Jika buffer FVF digunakan sebagai gantinya, masing-masing dari mereka harus berisi data geometri yang identik selain data koordinat tekstur khusus untuk setiap tekstur yang dirender. Ini akan mengakibatkan penalti kecepatan atau memori, tergantung pada strategi yang digunakan. Untuk informasi selengkapnya tentang koordinat tekstur, lihat Koordinat Tekstur (Direct3D 9).
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | d3d9helper.h (termasuk D3D9.h) |
Pustaka | D3D9.lib |
Lihat juga
IDirect3DDevice9::P rocessVertices