Partager via


ID3D11Device::CreateBuffer, méthode (d3d11.h)

Crée une mémoire tampon (mémoire tampon de vertex, mémoire tampon d’index ou mémoire tampon de constante de nuanceur).

Syntaxe

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

Paramètres

[in] pDesc

Type : const D3D11_BUFFER_DESC*

Pointeur vers une structure D3D11_BUFFER_DESC qui décrit la mémoire tampon.

[in, optional] pInitialData

Type : const D3D11_SUBRESOURCE_DATA*

Pointeur vers une structure D3D11_SUBRESOURCE_DATA qui décrit les données d’initialisation ; utilisez NULL pour allouer de l’espace uniquement (à l’exception du fait qu’il ne peut pas être NULL si l’indicateur d’utilisation est D3D11_USAGE_IMMUTABLE).

Si vous ne passez rien à pInitialData, le contenu initial de la mémoire pour la mémoire tampon n’est pas défini. Dans ce cas, vous devez écrire le contenu de la mémoire tampon d’une autre manière avant que la ressource soit lue.

[out, optional] ppBuffer

Type : ID3D11Buffer**

Adresse d’un pointeur vers l’interface ID3D11Buffer pour l’objet de mémoire tampon créé. Définissez ce paramètre sur NULL pour valider les autres paramètres d’entrée (S_FALSE indique un passage).

Valeur retournée

Type : HRESULT

Cette méthode retourne E_OUTOFMEMORY si la mémoire est insuffisante pour créer la mémoire tampon. Pour connaître les autres valeurs de retour possibles, consultez Codes de retour Direct3D 11 .

Remarques

Pour obtenir un exemple de code, consultez How to: Create a Vertex Buffer, How to: Create an Index Buffer ou How to: Create a Constant Buffer.

Pour une mémoire tampon constante (BindFlags de D3D11_BUFFER_DESC définie sur D3D11_BIND_CONSTANT_BUFFER), vous devez définir la valeur ByteWidth de D3D11_BUFFER_DESC en multiples de 16 et inférieure ou égale à D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.

Le runtime Direct3D 11.1, disponible sur Windows 8 et les systèmes d’exploitation ultérieurs, fournit les nouvelles fonctionnalités suivantes pour CreateBuffer :

Vous pouvez créer une mémoire tampon constante supérieure à la taille maximale de mémoire tampon constante à laquelle un nuanceur peut accéder (4 096 constantes 32 bits*4 composants – 64 Ko). Lorsque vous liez la mémoire tampon constante au pipeline (par exemple, via PSSetConstantBuffers ou PSSetConstantBuffers1), vous pouvez définir une plage de la mémoire tampon à laquelle le nuanceur peut accéder et qui correspond à la limite constante 4096.

Le runtime Direct3D 11.1 (disponible dans Windows 8 et les systèmes d’exploitation ultérieurs) émule cette fonctionnalité pour les niveaux de fonctionnalité 9.1, 9.2 et 9.3 ; Par conséquent, cette fonctionnalité est prise en charge pour les niveaux de fonctionnalité 9.1, 9.2 et 9.3.

Cette fonctionnalité est toujours disponible sur les nouveaux pilotes pour le niveau de fonctionnalité 10 et supérieur.

Sur les runtimes antérieurs à Direct3D 11.1, un appel à CreateBuffer pour demander une mémoire tampon constante supérieure à 4096 échoue.

Configuration requise

   
Plateforme cible Windows
En-tête d3d11.h
Bibliothèque D3D11.lib

Voir aussi

ID3D11Device