Méthode IDirect3DDevice9 ::CreateVertexBuffer (d3d9helper.h)
Crée une mémoire tampon de vertex.
Syntaxe
HRESULT CreateVertexBuffer(
[in] UINT Length,
[in] DWORD Usage,
[in] DWORD FVF,
[in] D3DPOOL Pool,
[out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
[in] HANDLE *pSharedHandle
);
Paramètres
[in] Length
Type : UINT
Taille de la mémoire tampon de vertex, en octets. Pour les mémoires tampons de vertex FVF, La longueur doit être suffisamment grande pour contenir au moins un sommet, mais elle n’a pas besoin d’être un multiple de la taille du vertex. La longueur n’est pas validée pour les mémoires tampons non FVF. Consultez la section Notes.
[in] Usage
Type : DWORD
L’utilisation peut être 0, ce qui indique aucune valeur d’utilisation. Toutefois, si l’utilisation est souhaitée, utilisez une combinaison d’une ou plusieurs constantes D3DUSAGE . Il est recommandé de faire correspondre le paramètre d’utilisation dans CreateVertexBuffer avec les indicateurs de comportement dans IDirect3D9 ::CreateDevice. Pour plus d'informations, consultez la section Notes.
[in] FVF
Type : DWORD
Combinaison de D3DFVF, un spécificateur d’utilisation qui décrit le format de vertex des sommets dans cette mémoire tampon. Si ce paramètre est défini sur un code FVF valide, la mémoire tampon de vertex créée est une mémoire tampon de vertex FVF (voir Remarques). Sinon, si ce paramètre est défini sur zéro, la mémoire tampon de vertex est une mémoire tampon de vertex non FVF.
[in] Pool
Type : D3DPOOL
Membre du D3DPOOL type énuméré, décrivant une classe de mémoire valide dans laquelle placer la ressource. Ne définissez pas sur D3DPOOL_SCRATCH.
[out, retval] ppVertexBuffer
Type : IDirect3DVertexBuffer9**
Adresse d’un pointeur vers une interface IDirect3DVertexBuffer9 , représentant la ressource de mémoire tampon de vertex créée.
[in] pSharedHandle
Type : HANDLE*
Réservé. Définissez ce paramètre sur NULL. Ce paramètre peut être utilisé dans Direct3D 9 pour Windows Vista pour partager des ressources.
Valeur retournée
Type : HRESULT
Si la méthode réussit, la valeur de retour est D3D_OK. Si la méthode échoue, la valeur de retour peut être l’une des suivantes : D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.
Remarques
Une mémoire tampon de vertex peut être utilisée avec le traitement du vertex matériel ou logiciel. Cela est déterminé par la façon dont l’appareil et la mémoire tampon de vertex sont créés.
Lorsqu’un appareil est créé, CreateDevice utilise l’indicateur de comportement pour déterminer s’il faut traiter les sommets dans du matériel ou des logiciels. Trois options sont possibles :
- Traiter les sommets dans le matériel en définissant D3DCREATE_HARDWARE_VERTEXPROCESSING.
- Traiter les sommets dans le logiciel en définissant D3DCREATE_SOFTWARE_VERTEXPROCESSING.
- Traiter les sommets dans le matériel ou les logiciels en définissant D3DCREATE_MIXED_VERTEXPROCESSING.
Lorsqu’une mémoire tampon de vertex est créée, CreateVertexBuffer utilise le paramètre d’utilisation pour décider s’il faut traiter les sommets dans du matériel ou des logiciels.
- Si CreateDevice utilise D3DCREATE_HARDWARE_VERTEXPROCESSING, CreateVertexBuffer doit utiliser 0.
- Si CreateDevice utilise D3DCREATE_SOFTWARE_VERTEXPROCESSING, CreateVertexBuffer doit utiliser 0 ou D3DUSAGE_SOFTWAREPROCESSING. Pour l’une ou l’autre valeur, les sommets sont traités dans le logiciel.
- Si CreateDevice utilise D3DCREATE_MIXED_VERTEXPROCESSING, CreateVertexBuffer peut utiliser 0 ou D3DUSAGE_SOFTWAREPROCESSING.
L’interface IDirect3DDevice9 prend en charge le rendu des primitives à l’aide de données de vertex stockées dans des objets tampons de vertex. Les tampons de vertex sont créés à partir de IDirect3DDevice9 et sont utilisables uniquement avec l’objet IDirect3DDevice9 à partir duquel ils sont créés.
Lorsqu’il est défini sur une valeur différente de zéro, qui doit être un code FVF valide, le paramètre FVF indique que le contenu de la mémoire tampon doit être caractérisé par un code FVF. Une mémoire tampon de vertex créée avec un code FVF est appelée mémoire tampon de vertex FVF. Pour plus d’informations, consultez Mémoires tampons de vertex FVF (Direct3D 9).
Les mémoires tampons non FVF peuvent être utilisées pour entrelacer des données pendant le rendu multipass ou le rendu multitexture en une seule passe. Pour ce faire, une mémoire tampon contient des données géométriques et les autres contiennent des coordonnées de texture pour chaque texture à afficher. Lors du rendu, la mémoire tampon contenant les données geometry est entrelacée avec chacune des mémoires tampons contenant les coordonnées de texture. Si des mémoires tampons FVF étaient utilisées à la place, chacune d’elles doit contenir des données géométriques identiques en plus des données de coordonnées de texture spécifiques à chaque texture rendue. Cela entraînerait une pénalité de vitesse ou de mémoire, selon la stratégie utilisée. Pour plus d’informations sur les coordonnées de texture, consultez Coordonnées de texture (Direct3D 9).
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d9helper.h (incluez D3D9.h) |
Bibliothèque | D3D9.lib |
Voir aussi
IDirect3DDevice9 ::P rocessVertices