METODE ID3D11Device::CreateBuffer (d3d11.h)
Membuat buffer (buffer vertex, buffer indeks, atau buffer shader-constant).
Sintaks
HRESULT CreateBuffer(
[in] const D3D11_BUFFER_DESC *pDesc,
[in, optional] const D3D11_SUBRESOURCE_DATA *pInitialData,
[out, optional] ID3D11Buffer **ppBuffer
);
Parameter
[in] pDesc
Jenis: const D3D11_BUFFER_DESC*
Penunjuk ke struktur D3D11_BUFFER_DESC yang menjelaskan buffer.
[in, optional] pInitialData
Jenis: const D3D11_SUBRESOURCE_DATA*
Penunjuk ke struktur D3D11_SUBRESOURCE_DATA yang menjelaskan data inisialisasi; gunakan NULL untuk mengalokasikan ruang saja (dengan pengecualian bahwa tidak boleh NULL jika bendera penggunaan D3D11_USAGE_IMMUTABLE).
Jika Anda tidak meneruskan apa pun ke pInitialData, konten awal memori untuk buffer tidak terdefinisi. Dalam hal ini, Anda perlu menulis konten buffer dengan cara lain sebelum sumber daya dibaca.
[out, optional] ppBuffer
Jenis: ID3D11Buffer**
Alamat penunjuk ke antarmuka ID3D11Buffer untuk objek buffer yang dibuat. Atur parameter ini ke NULL untuk memvalidasi parameter input lainnya (S_FALSE menunjukkan pass).
Menampilkan nilai
Jenis: HRESULT
Metode ini mengembalikan E_OUTOFMEMORY jika memori tidak cukup untuk membuat buffer. Lihat Kode Pengembalian Direct3D 11 untuk kemungkinan nilai pengembalian lainnya.
Keterangan
Misalnya kode, lihat Cara: Membuat Buffer Vertex, Cara: Membuat Buffer Indeks atau Cara: Membuat Buffer Konstanta.
Untuk buffer konstanta (BindFlags dari D3D11_BUFFER_DESC diatur ke D3D11_BIND_CONSTANT_BUFFER), Anda harus mengatur nilai ByteWidthD3D11_BUFFER_DESC dalam kelipatan 16, dan kurang dari atau sama dengan D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.
Runtime Direct3D 11.1, yang tersedia di sistem operasi Windows 8 dan yang lebih baru, menyediakan fungsionalitas baru berikut untuk CreateBuffer:
Anda dapat membuat buffer konstanta yang lebih besar dari ukuran buffer konstan maksimum yang dapat diakses oleh shader (4096 32-bit*konstanta 4 komponen – 64KB). Saat Anda mengikat buffer konstanta ke alur (misalnya, melalui PSSetConstantBuffers atau PSSetConstantBuffers1), Anda dapat menentukan rentang buffer yang dapat diakses shader yang sesuai dalam batas konstanta 4096.
Runtime Direct3D 11.1 (tersedia di Windows 8 dan sistem operasi yang lebih baru) meniru fitur ini untuk tingkat fitur 9.1, 9.2, dan 9.3; oleh karena itu, fitur ini didukung untuk tingkat fitur 9.1, 9.2, dan 9.3.
Fitur ini selalu tersedia pada driver baru untuk tingkat fitur 10 dan yang lebih tinggi.
Pada runtime yang lebih lama dari Direct3D 11.1, panggilan ke CreateBuffer untuk meminta buffer konstanta yang lebih besar dari 4096 gagal.
Persyaratan
Target Platform | Windows |
Header | d3d11.h |
Pustaka | D3D11.lib |