Mémoires tampons de vertex (Direct3D 9)
Les mémoires tampons de vertex, représentées par l’interface IDirect3DVertexBuffer9 , sont des mémoires tampons qui contiennent des données de vertex. Les mémoires tampons de vertex peuvent contenir n’importe quel type de vertex (transformé ou non transformé, éclairé ou non éclairé) qui peut être rendu à l’aide des méthodes de rendu dans l’interface IDirect3DDevice9 . Vous pouvez traiter les sommets dans une mémoire tampon de vertex pour effectuer des opérations telles que la transformation, l’éclairage ou la génération d’indicateurs de découpage. La transformation est toujours effectuée.
La flexibilité des tampons de vertex en fait des points intermédiaires idéaux pour réutiliser la géométrie transformée. Vous pouvez créer une mémoire tampon de vertex unique, transformer, éclairer et découper les sommets, et restituer le modèle dans la scène autant de fois que nécessaire sans le transformer à nouveau, même avec des changements d’état de rendu entrelacés. Cela est utile pour le rendu de modèles qui utilisent plusieurs textures : la géométrie n’est transformée qu’une seule fois, puis des parties de celle-ci peuvent être rendues en fonction des besoins, entrelacées avec les modifications de texture requises. Les modifications d’état de rendu effectuées après le traitement des vertex prennent effet la prochaine fois que les sommets sont traités.
Description
Une mémoire tampon de vertex est décrite en termes de ses fonctionnalités : si elle ne peut exister que dans la mémoire système, si elle est utilisée uniquement pour les opérations d’écriture, ainsi que le type et le nombre de sommets qu’elle peut contenir. Tous ces traits sont conservés dans une structure D3DVERTEXBUFFER_DESC .
Le membre Format est défini sur D3DFMT_VERTEXDATA pour indiquer qu’il s’agit d’une mémoire tampon de vertex. Le type identifie le type de ressource de la mémoire tampon de vertex. Le membre Structure d’utilisation contient des indicateurs de fonctionnalité généraux. L’indicateur D3DUSAGE_SOFTWAREPROCESSING indique que la mémoire tampon de vertex doit être utilisée avec le traitement du vertex logiciel. La présence de l’indicateur D3DUSAGE_WRITEONLY dans Utilisation indique que la mémoire tampon de vertex est utilisée uniquement pour les opérations d’écriture. Cela permet au pilote de placer les données de vertex dans le meilleur emplacement de mémoire pour permettre un traitement et un rendu rapides. Si l’indicateur D3DUSAGE_WRITEONLY n’est pas utilisé, le pilote est moins susceptible de placer les données dans un emplacement inefficace pour les opérations de lecture. Cela sacrifie une certaine vitesse de traitement et de rendu. Si cet indicateur n’est pas spécifié, il est supposé que les applications effectuent des opérations de lecture et d’écriture sur les données dans la mémoire tampon de vertex.
Pool spécifie la classe de mémoire allouée pour la mémoire tampon de vertex. L’indicateur D3DPOOL_SYSTEMMEM indique que le système a créé la mémoire tampon de vertex dans la mémoire système.
Le membre Size stocke la taille, en octets, des données de mémoire tampon de vertex. Le membre FVF contient une combinaison de D3DFVF qui identifient le type de sommets que contient la mémoire tampon.
Pool de mémoire et utilisation
Vous pouvez créer des mémoires tampons de vertex avec la méthode IDirect3DDevice9::CreateVertexBuffer , qui prend les paramètres de pool (classe mémoire) et d’utilisation. IDirect3DDevice9::CreateVertexBuffer peut également être créé avec un code FVF spécifié pour une utilisation dans le traitement des vertex de fonction fixe ou comme sortie des sommets de processus. Pour plus d’informations, consultez Mémoires tampons de vertex FVF (Direct3D 9).
L’indicateur D3DUSAGE_SOFTWAREPROCESSING peut être défini lorsque le traitement du vertex logiciel ou en mode mixte (D3DCREATE_MIXED_VERTEXPROCESSING/D3DCREATE_SOFTWARE_VERTEXPROCESSING) est activé pour cet appareil. D3DUSAGE_SOFTWAREPROCESSING doit être défini pour que les mémoires tampons soient utilisées avec le traitement de vertex logiciel en mode mixte, mais elle ne doit pas être définie pour obtenir les meilleures performances possibles lors de l’utilisation du traitement des vertex matériels en mode mixte. (D3DCREATE_HARDWARE_VERTEXPROCESSING). Toutefois, la définition de D3DUSAGE_SOFTWAREPROCESSING est la seule option lorsqu’une seule mémoire tampon doit être utilisée avec le traitement du vertex matériel et logiciel. D3DUSAGE_SOFTWAREPROCESSING est autorisé pour les appareils mixtes ainsi que pour les appareils logiciels.
Il est possible de forcer les mémoires tampons de vertex et d’index dans la mémoire système en spécifiant D3DPOOL_SYSTEMMEM, même lorsque le traitement du vertex est effectué dans le matériel. Il s’agit d’un moyen d’éviter de trop grandes quantités de mémoire verrouillée sur la page lorsqu’un pilote place ces mémoires tampons dans la mémoire AGP.
Cette section présente les concepts nécessaires pour comprendre et utiliser les tampons de vertex dans une application Direct3D. Les informations sont divisées en sections suivantes.
- Création d’une mémoire tampon de vertex (Direct3D 9)
- Accès au contenu d’une mémoire tampon de vertex (Direct3D 9)
- Rendu à partir d’une mémoire tampon de vertex (Direct3D 9)
- Mémoires tampons de vertex FVF (Direct3D 9)
- Traitement du vertex de fonction fixe (Direct3D 9)
- Traitement programmable du vertex (Direct3D 9)
- Types d’appareils et exigences de traitement des vertex (Direct3D 9)
Rubriques connexes