Partager via


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 lu) 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 mémoires 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 seule mémoire tampon de vertex, transformer, éclairer et découper les sommets dans celui-ci, et afficher le modèle dans la scène autant de fois que nécessaire sans le transformer à nouveau, même avec des modifications d’état de rendu entrelacées. Cela est utile lorsque les modèles de rendu utilisent plusieurs textures : la géométrie n’est transformée qu’une seule fois, puis les parties de celui-ci peuvent être rendues selon les besoins, entrelacées avec les modifications de texture requises. Les modifications d’état de rendu apportées après le traitement des sommets prennent effet la prochaine fois que les sommets sont traités.

Description

Une mémoire tampon de vertex est décrite en termes de fonctionnalités : s’il peut exister uniquement dans la mémoire système, s’il est utilisé uniquement pour les opérations d’écriture, et le type et le nombre de sommets qu’il peut contenir. Toutes ces caractéristiques sont conservées 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 de la structure d’utilisation contient des indicateurs de capacité 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 de 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.

Le 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 des paramètres d’utilisation et de pool (classe mémoire). IDirect3DDevice9 ::CreateVertexBuffer pouvez également être créé avec un code FVF spécifié à utiliser dans le traitement de 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 de D3DUSAGE_SOFTWAREPROCESSING peut être défini lorsque le traitement de vertex en mode mixte ou logiciel (D3DCREATE_MIXED_VERTEXPROCESSING/D3DCREATE_SOFTWARE_VERTEXPROCESSING) est activé pour cet appareil. D3DUSAGE_SOFTWAREPROCESSING devez ê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 de vertex matériel 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 de 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 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 trop de grandes quantités de mémoire verrouillée par 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 des tampons de vertex dans une application Direct3D. Les informations sont divisées en sections suivantes.

ressources Direct3D

Rendu à partir de mémoires tampons de vertex et d’index (Direct3D 9)

tampons d’index (Direct3D 9)