structure D3DHAL_DRAWPRIMITIVES2DATA (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 du pilote. Ce membre peut être une OR au niveau du bit des valeurs suivantes :
Valeur | Signification |
---|---|
D3DHALDP2_EXECUTEBUFFER | Les mémoires tampons de vertex et de commande ont été créées dans la mémoire système. Le pilote doit mettre à jour le tableau d’état vers lequel lpdwRStates pointe. Cet indicateur est défini par Direct3D uniquement. |
D3DHALDP2_REQCOMMANDBUFSIZE | Le pilote doit pouvoir augmenter la mémoire tampon de commande 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 vers une nouvelle mémoire tampon de commande et retourner immédiatement, en traitant de manière asynchrone la mémoire tampon d’origine tandis 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 échanger la mémoire tampon vers laquelle lpDDVertex ou lpVertices pointe vers un nouveau tampon de vertex et retourner immédiatement, en traitant de manière asynchrone la mémoire tampon d’origine tandis 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 est valide. Le pilote doit donc obtenir les données de vertex 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 commande 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 qui lpDDVertex ou lpVertices pointe vers. Ce membre peut être une OR au niveau du bit des valeurs du tableau suivant. Un seul des indicateurs D3DFVF_TEXx est défini.
Valeur | Signification |
---|---|
D3DFVF_DIFFUSE | Chaque vertex a une couleur diffuse. |
D3DFVF_SPECULAR | Chaque vertex a une couleur spéculaire. |
D3DFVF_TEX0 | Aucune coordonnée de texture n’est fournie avec les données de vertex. |
D3DFVF_TEX1 | Chaque vertex a un ensemble de coordonnées de texture. |
D3DFVF_TEX2 | Chaque vertex a deux ensembles de coordonnées de texture. |
D3DFVF_TEX3 | Chaque vertex a trois ensembles de coordonnées de texture. |
D3DFVF_TEX4 | Chaque vertex a quatre ensembles de coordonnées de texture. |
D3DFVF_TEX5 | Chaque vertex a cinq ensembles de coordonnées de texture. |
D3DFVF_TEX6 | Chaque vertex a six ensembles de coordonnées de texture. |
D3DFVF_TEX7 | Chaque vertex a sept ensembles de coordonnées de texture. |
D3DFVF_TEX8 | Chaque vertex a huit ensembles de coordonnées de texture. |
D3DFVF_XYZRHW | Chaque vertex 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 qui lpDDCommands points à 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 de D3DHALDP2_USERMEMVERTICES est défini dans dwFlags.
dwVertexOffset
Spécifie le nombre d’octets dans la surface vers laquelle pointe lpDDVertex ou lpVertices où les données de vertex démarrent.
dwVertexLength
Spécifie le nombre de sommets pour lesquels des données valides existent dans la surface vers laquelle pointe lpDDVertex ou lpVertices. Ces données valides commencent à 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 de 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 commande 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’état de rendu que le pilote doit mettre à jour lorsqu’il analyse les 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 le D3DRENDERSTATETYPE types énumérés pour mettre à jour l’élément approprié du tableau d’état de rendu.
dwVertexSize
Spécifie la taille de chaque vertex, 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 suivie 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 à lpDDVertex ou lpVertices, multipliez la valeur en dwVertexLength par la valeur dans dwVertexSize.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | d3dhal.h (include D3dhal.h) |