D3DHAL_DRAWPRIMITIVES2DATA structure (d3dhal.h)
La structure D3DHAL_DRAWPRIMITIVES2DATA contient les informations requises par la fonction D3dDrawPrimitives2 pour afficher les primitives.
Syntaxe
typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
DWORD dwVertexType;
LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
DWORD dwCommandOffset;
DWORD dwCommandLength;
union {
LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
LPVOID lpVertices;
};
DWORD dwVertexOffset;
DWORD dwVertexLength;
DWORD dwReqVertexBufSize;
DWORD dwReqCommandBufSize;
LPDWORD lpdwRStates;
union {
DWORD dwVertexSize;
HRESULT ddrval;
};
DWORD dwErrorOffset;
} D3DHAL_DRAWPRIMITIVES2DATA;
Membres
dwhContext
Spécifie le handle de contexte de l’appareil Direct3D.
dwFlags
Spécifie des indicateurs qui fournissent des instructions supplémentaires au pilote ou fournissent des informations à partir du pilote. Ce membre peut être un or au niveau du bit des valeurs suivantes :
Valeur | Signification |
---|---|
D3DHALDP2_EXECUTEBUFFER | Les mémoires tampons de commande et de vertex ont été créées dans la mémoire système. Le pilote doit mettre à jour le tableau d’états vers lequel lpdwRStates pointe. Cet indicateur est défini par Direct3D uniquement. |
D3DHALDP2_REQCOMMANDBUFSIZE | Le pilote doit être en mesure d’augmenter la mémoire tampon de commandes actuelle d’au moins la taille spécifiée dans dwReqCommandBufSize. Les pilotes qui ne prennent pas en charge le multibuffering des mémoires tampons de commande peuvent ignorer cet indicateur. Cet indicateur est défini par Direct3D uniquement. |
D3DHALDP2_REQVERTEXBUFSIZE | Le pilote doit être en mesure d’allouer une mémoire tampon de vertex d’au moins la taille spécifiée dans dwReqCommandBufSize. Les pilotes qui ne prennent pas en charge le multibuffering des mémoires tampons de vertex peuvent ignorer cet indicateur. Cet indicateur est défini par Direct3D uniquement. |
D3DHALDP2_SWAPCOMMANDBUFFER | Le pilote peut permuter la mémoire tampon vers laquelle lpDDCommands pointe avec une nouvelle mémoire tampon de commande et retourner immédiatement, en traitant de manière asynchrone la mémoire tampon d’origine pendant que Direct3D remplit la nouvelle mémoire tampon de commande. Les pilotes qui ne prennent pas en charge le multibuffering des mémoires tampons de commande peuvent ignorer cet indicateur. Cet indicateur est défini par Direct3D uniquement. |
D3DHALDP2_SWAPVERTEXBUFFER | Le pilote peut permuter la mémoire tampon vers laquelle pointe lpDDVertex ou lpVertices avec une nouvelle mémoire tampon de vertex et retourner immédiatement, en traitant la mémoire tampon d’origine de manière asynchrone pendant que Direct3D remplit la nouvelle mémoire tampon de vertex. Les pilotes qui ne prennent pas en charge le multibuffering des mémoires tampons de vertex peuvent ignorer cet indicateur. Cet indicateur est défini par Direct3D uniquement. |
D3DHALDP2_USERMEMVERTICES | Le membre lpVertices étant valide, le pilote doit obtenir les données de vertex à partir de la mémoire allouée par l’utilisateur vers laquelle lpVertices pointe. Cet indicateur est défini par Direct3D uniquement. |
D3DHALDP2_VIDMEMCOMMANDBUF | La mémoire tampon de commandes allouée par le pilote en tant que mémoire tampon d’échange n’est pas dans la mémoire système. Cet indicateur peut être défini par les pilotes qui prennent en charge le multibuffering des mémoires tampons de commande. |
D3DHALDP2_VIDMEMVERTEXBUF | La mémoire tampon de vertex allouée par le pilote en tant que mémoire tampon d’échange n’est pas dans la mémoire système. Cet indicateur peut être défini par les pilotes qui prennent en charge le multibuffering des mémoires tampons de vertex. |
dwVertexType
Identifie le FVF des données dans la mémoire tampon de vertex ; autrement dit, dwVertexType spécifie les champs de données par vertex présents dans la mémoire tampon de vertex vers laquelle lpDDVertex ou lpVertices pointe. Ce membre peut être un or au niveau du bit des valeurs du tableau suivant. Un seul des indicateurs de D3DFVF_TEXx est défini.
Valeur | Signification |
---|---|
D3DFVF_DIFFUSE | Chaque sommet a une couleur diffuse. |
D3DFVF_SPECULAR | Chaque sommet a une couleur spéculaire. |
D3DFVF_TEX0 | Aucune coordonnée de texture n’est fournie avec les données de vertex. |
D3DFVF_TEX1 | Chaque sommet a un ensemble de coordonnées de texture. |
D3DFVF_TEX2 | Chaque sommet a deux ensembles de coordonnées de texture. |
D3DFVF_TEX3 | Chaque sommet a trois ensembles de coordonnées de texture. |
D3DFVF_TEX4 | Chaque sommet a quatre ensembles de coordonnées de texture. |
D3DFVF_TEX5 | Chaque sommet a cinq ensembles de coordonnées de texture. |
D3DFVF_TEX6 | Chaque sommet a six ensembles de coordonnées de texture. |
D3DFVF_TEX7 | Chaque sommet a sept ensembles de coordonnées de texture. |
D3DFVF_TEX8 | Chaque vertex a huit ensembles de coordonnées de texture. |
D3DFVF_XYZRHW | Chaque sommet a des coordonnées x, y, z et w. Cet indicateur est toujours défini. |
lpDDCommands
dwCommandOffset
dwCommandLength
Spécifie le nombre d’octets de données de commande valides dans la surface vers laquelle lpDDCommands pointe à partir de dwCommandOffset.
lpDDVertex
Pointe vers la structure DD_SURFACE_LOCAL qui identifie la surface DirectDraw contenant les données de vertex lorsque l’indicateur D3DHALDP2_USERMEMVERTICES n’est pas défini dans dwFlags. Forme une union avec lpVertices.
lpVertices
Pointe vers un bloc de mémoire en mode utilisateur contenant des données de vertex lorsque l’indicateur D3DHALDP2_USERMEMVERTICES est défini dans dwFlags.
dwVertexOffset
Spécifie le nombre d’octets dans la surface vers laquelle pointe lpDDVertex ou lpVertices où commencent les données de vertex.
dwVertexLength
Spécifie le nombre de sommets pour lesquels des données valides existent dans la surface pointée par lpDDVertex ou lpVertices. Ces données valides commencent à l’adresse dwVertexOffset.
dwReqVertexBufSize
Spécifie le nombre minimal d’octets que le pilote doit allouer pour la mémoire tampon de vertex d’échange. Ce membre est valide uniquement lorsque l’indicateur D3DHALDP2_REQVERTEXBUFSIZE est défini. Les pilotes qui ne prennent pas en charge le multibuffering des mémoires tampons de vertex doivent ignorer ce membre.
dwReqCommandBufSize
Spécifie le nombre minimal d’octets dont le pilote doit augmenter la mémoire tampon de commandes d’échange. Ce membre n’est valide que lorsque l’indicateur D3DHALDP2_REQCOMMANDBUFSIZE est défini. Les pilotes qui ne prennent pas en charge le multibuffering des mémoires tampons de commande doivent ignorer ce membre.
lpdwRStates
Pointe vers un tableau d’états de rendu que le pilote doit mettre à jour lors de l’analyse des commandes d’état de rendu à partir de la mémoire tampon de commandes. Le pilote doit mettre à jour ce tableau uniquement lorsque l’indicateur D3DHALDP2_EXECUTEBUFFER est défini dans dwFlags. Le pilote doit utiliser les types énumérés D3DRENDERSTATETYPE pour mettre à jour l’élément approprié du tableau d’état de rendu.
dwVertexSize
Spécifie la taille de chaque sommet, en octets. Ce membre forme une union avec ddrval.
ddrval
Spécifie l’emplacement où le pilote écrit la valeur de retour de D3dDrawPrimitives2. D3D_OK indique la réussite. Sinon, le pilote doit retourner le code d’erreur D3DERR_Xxx approprié. Pour plus d’informations, consultez Codes de retour pour les rappels de pilotes Direct3D.
Valeur | Signification |
---|---|
D3D_OK | L’opération s’est terminée avec succès. |
D3DERR_COMMAND_UNPARSED | Le pilote nécessite que le runtime Direct3D analyse la mémoire tampon d’exécution. |
dwErrorOffset
Chaque D3DHAL_DP2RESPONSEQUERY est suivi des données suivantes relatives à la requête :
- BOOL pour D3DQUERYTYPE_EVENT
- DWORD pour D3DQUERYTYPE_OCCLUSION
- structure D3DDEVINFO_VCACHE pour D3DQUERYTYPE_VCACHE
Remarques
Notez que le membre dwVertexOffset spécifie des valeurs en octets ; Le membre dwVertexLength spécifie des valeurs dans les sommets.
Pour calculer les données valides, en octets, qui existent dans la surface au niveau de lpDDVertex ou lpVertices, multipliez la valeur dans dwVertexLength par la valeur dans dwVertexSize.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | d3dhal.h (inclure D3dhal.h) |