Metodo ID3D11Device::CreateBuffer (d3d11.h)
Crea un buffer (buffer dei vertici, buffer di indice o buffer costante shader).
HRESULT CreateBuffer(
[in] const D3D11_BUFFER_DESC *pDesc,
[in, optional] const D3D11_SUBRESOURCE_DATA *pInitialData,
[out, optional] ID3D11Buffer **ppBuffer
);
[in] pDesc
Tipo: const D3D11_BUFFER_DESC*
Puntatore a una struttura D3D11_BUFFER_DESC che descrive il buffer.
[in, optional] pInitialData
Tipo: const D3D11_SUBRESOURCE_DATA*
Puntatore a una struttura D3D11_SUBRESOURCE_DATA che descrive i dati di inizializzazione; usare NULL per allocare spazio solo (ad eccezione del fatto che non può essere NULL se il flag di utilizzo è D3D11_USAGE_IMMUTABLE).
Se non si passa alcun elemento a pInitialData, il contenuto iniziale della memoria per il buffer non è definito. In questo caso, è necessario scrivere il contenuto del buffer in altro modo prima che la risorsa venga letta.
[out, optional] ppBuffer
Tipo: ID3D11Buffer**
Indirizzo di un puntatore all'interfaccia ID3D11Buffer per l'oggetto buffer creato. Impostare questo parametro su NULL per convalidare gli altri parametri di input (S_FALSE indica un passaggio).
Tipo: HRESULT
Questo metodo restituisce E_OUTOFMEMORY se la memoria non è sufficiente per creare il buffer. Per altri possibili valori restituiti, vedere Codici restituiti Direct3D 11 .
Per un esempio di codice, vedere Procedura: Creare un buffer dei vertici, Procedura: Creare un buffer di indice o Procedura: Creare un buffer costante.
Per un buffer costante (BindFlags di D3D11_BUFFER_DESC impostato su D3D11_BIND_CONSTANT_BUFFER), è necessario impostare il valore ByteWidth di D3D11_BUFFER_DESC in multipli di 16 e minore o uguale a D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.
Il runtime Direct3D 11.1, disponibile nei sistemi operativi Windows 8 e versioni successive, offre le nuove funzionalità seguenti per CreateBuffer:
È possibile creare un buffer costante maggiore delle dimensioni massime del buffer costante a cui può accedere uno shader (costanti a 4096 a 32 bit*a 4 componenti - 64 KB). Quando si associa il buffer costante alla pipeline, ad esempio tramite PSSetConstantBuffers o PSSetConstantBuffers1, è possibile definire un intervallo del buffer a cui può accedere lo shader entro il limite costante 4096.
Il runtime Direct3D 11.1 (disponibile nei sistemi operativi Windows 8 e versioni successive) emula questa funzionalità per il livello di funzionalità 9.1, 9.2 e 9.3; questa funzionalità è pertanto supportata per il livello di funzionalità 9.1, 9.2 e 9.3.
Questa funzionalità è sempre disponibile sui nuovi driver per il livello di funzionalità 10 e superiore.
Nei runtime precedenti a Direct3D 11.1, una chiamata a CreateBuffer per richiedere un buffer costante maggiore di 4096 ha esito negativo.
Piattaforma di destinazione | Windows |
Intestazione | d3d11.h |
Libreria | D3D11.lib |