Condividi tramite


Metodo ID3D11Device::CreateBuffer (d3d11.h)

Crea un buffer (buffer dei vertici, buffer di indice o buffer costante shader).

Sintassi

HRESULT CreateBuffer(
  [in]            const D3D11_BUFFER_DESC      *pDesc,
  [in, optional]  const D3D11_SUBRESOURCE_DATA *pInitialData,
  [out, optional] ID3D11Buffer                 **ppBuffer
);

Parametri

[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).

Valore restituito

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 .

Commenti

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.

Requisiti

   
Piattaforma di destinazione Windows
Intestazione d3d11.h
Libreria D3D11.lib

Vedi anche

ID3D11Device