Partager via


D3DDDIARG_STATESET structure (d3dumddi.h)

La structure D3DDDIARG_STATESET décrit comment définir un bloc d’état.

Syntaxe

typedef struct _D3DDDIARG_STATESET {
  [in]     UINT              Operation;
  [in]     D3DSTATEBLOCKTYPE StateBlockType;
  [in/out] HANDLE            hStateSet;
} D3DDDIARG_STATESET;

Membres

[in] Operation

Opération à effectuer, qui peut être l’une des valeurs suivantes.

Valeur Signification
D3DHAL_STATESETBEGIN Commencez le bloc d’état référencé par le handle dans le membre hStateSet.
D3DHAL_STATESETCAPTURE Effectuer la capture. Lorsque cet indicateur est spécifié, le pilote doit capturer un instantané de l’état actuel qui correspond au bloc d’état référencé par le handle dans hStateSet. Autrement dit, seul l’état spécifié dans le bloc d’état est capturé.
D3DHAL_STATESETCREATE Créez un bloc d’état du type spécifié dans le membre StateBlockType. Les informations à enregistrer pour chaque type de bloc d’état sont décrites dans StateBlockType.
D3DHAL_STATESETDELETE Supprimez le bloc d’état référencé par le handle dans hStateSet.
D3DHAL_STATESETEND Terminez le bloc d’état référencé par le handle dans hStateSet.
D3DHAL_STATESETEXECUTE Exécutez le bloc d’état référencé par le handle dans hStateSet.

[in] StateBlockType

Valeur de type D3DSTATEBLOCKTYPE qui indique le type d’état que le pilote doit enregistrer. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
D3DSBT_ALL Le pilote doit capturer tous les états.
Lorsqu’il est demandé de capturer tous les états en mode appareil pur, le pilote doit capturer tout l’état à l’exception de l’état actuel du flux de vertex, de l’état actuel du flux d’index et des textures actuellement réalisées.
Le pilote doit capturer (c’est-à-dire enregistrer) la fenêtre d’affichage, toutes les transformations du monde, la transformation d’affichage, la transformation de projection, la transformation de texture pour toutes les étapes de texture, tous les plans de découpage utilisateur, le matériau actuel, tous les voyants qui ont été utilisés avant la création du bloc d’état, le handle de nuanceur de vertex actuel, le handle de nuanceur de pixels actuel, les constantes de nuanceur de vertex actuelles, et les constantes actuelles du nuanceur de pixels. En outre, le pilote doit capturer les états de rendu et de texture suivants : D3DRENDERSTATE_SPECULARENABLE D3DRENDERSTATE_ZENABLE D3DRENDERSTATE_FILLMODE D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_LINEPATTERN D3DRENDERSTATE_ZWRITEENABLE D3DRENDERSTATE_ALPHATESTENABLE D3DRENDERSTATE_LASTPIXEL D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND D3DRENDERSTATE_CULLMODE D3DRENDERSTATE_ZFUNC D3DRENDERSTATE_ALPHAREF D3DRENDERSTATE_ALPHAFUNC D3DRENDERSTATE_DITHERENABLE D3DRENDERSTATE_FOGENABLE D3DRENDERSTATE_STIPPLEDALPHA D3DRENDERSTATE_FOGCOLOR D3DRENDERSTATE_FOGTABLEMODE D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_EDGEANTIALIAS D3DRENDERSTATE_ALPHABLENDENABLE D3DRENDERSTATE_ZBIAS D3DRENDERSTATE_RANGEFOGENABLE D3DRENDERSTATE_STENCILENABLE D3DRENDERSTATE_STENCILFAIL D3DRENDERSTATE_STENCILZFAIL D3DRENDERSTATE_STENCILPASS D3DRENDERSTATE_STENCILFUNC D3DRENDERSTATE_STENCILREF D3DRENDERSTATE_STENCILMASK D3DRENDERSTATE_STENCILWRITEMASK D3DRENDERSTATE_TEXTUREFACTOR D3DRENDERSTATE_WRAP0 D3DRENDERSTATE_WRAP1 D3DRENDERSTATE_WRAP2 D3DRENDERSTATE_WRAP3 D3DRENDERSTATE_WRAP4 D3DRENDERSTATE_WRAP5 D3DRENDERSTATE_WRAP6 D3DRENDERSTATE_WRAP7 D3DRENDERSTATE_AMBIENT D3DRENDERSTATE_COLORVERTEX D3DRENDERSTATE_FOGVERTEXMODE D3DRENDERSTATE_CLIPPING D3DRENDERSTATE_LIGHTING D3DRENDERSTATE_NORMALIZENORMALS D3DRENDERSTATE_LOCALVIEWER D3DRENDERSTATE_ EMISSIVEMATERIALSOURCE D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRENDERSTATE_VERTEXBLEND D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_SOFTWAREVERTEXPROCESSING D3DRS_POINTSIZE D3DRS_POINTSIZE_MIN D3DRS_POINTSPRITEENABLE D3DRS_POINTSCALEENABLE D3DRS_POINTSCALE_A D3DRS_POINTSCALE_B D3DRS_POINTSCALE_C D3DRS_MULTISAMPLEANTIALIAS D3DRS_MULTISAMPLEMASK D3DRS_PATCHEDGESTYLE D3DRS_PATCHSEGMENTS D3DRS_ POINTSIZE_MAX D3DRS_INDEXEDVERTEXBLENDENABLE D3DRS_COLORWRITEENABLE D3DRS_TWEENFACTOR D3DRS_BLENDOP
Le pilote doit enregistrer les états de l’étape de texture suivants :
D3DTSS_COLOROP D3DTSS_COLORARG1 D3DTSS_COLORARG2 D3DTSS_ALPHAOP D3DTSS_ALPHAARG1 D3DTSS_ALPHAARG2 D3DTSS_BUMPENVMAT00 D3DTSS_BUMPENVMAT01 D3DTSS_BUMPENVMAT10 D3DTSS_BUMPENVMAT11 D3DTSS_TEXCOORDINDEX D3DTSS_ADDRESSU D3DTSS_ADDRESSV D3DTSS_BORDERCOLOR D3DTSS_MAGFILTER D3DTSS_MINFILTER D3DTSS_MIPFILTER D3DTSS_MIPMAPLODBIAS D3DTSS_MAXMIPLEVEL D3DTSS_MAXANISOTROPY D3DTSS_BUMPENVLSCALE D3DTSS_BUMPENVLOFFSET D3DTSS_TEXTURETRANSFORMFLAGS D3DTSS_ADDRESSW D3DTSS_COLORARG0 D3DTSS_ ALPHAARG0 D3DTSS_RESULTARG
D3DSBT_PIXELSTATE Le pilote doit capturer uniquement l’état des pixels.
Lors de la capture de l’état des pixels en mode appareil pur, le pilote doit capturer (c’est-à-dire enregistrer) le handle du nuanceur de pixels actuel, les constantes actuelles du nuanceur de pixels et les états de rendu liés au traitement des pixels et les états d’étape de texture suivants :
D3DRENDERSTATE_ZENABLE D3DRENDERSTATE_FILLMODE D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_LINEPATTERN D3DRENDERSTATE_ZWRITEENABLE D3DRENDERSTATE_ALPHATESTENABLE D3DRENDERSTATE_LASTPIXEL D3DRENDERSTATE_SRCBLEND D3DRENDERSTATE_DESTBLEND D3DRENDERSTATE_ZFUNC D3DRENDERSTATE_ALPHAREF D3DRENDERSTATE_ALPHAFUNC D3DRENDERSTATE_DITHERENABLE D3DRENDERSTATE_STIPPLEDALPHA D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_EDGEANTIALIAS D3DRENDERSTATE_ALPHABLENDENABLE D3DRENDERSTATE_ZBIAS D3DRENDERSTATE_STENCILENABLE D3DRENDERSTATE_STENCILFAIL D3DRENDERSTATE_STENCILZFAIL D3DRENDERSTATE_STENCILPASS D3DRENDERSTATE_STENCILFUNC D3DRENDERSTATE_STENCILREF D3DRENDERSTATE_STENCILMASK D3DRENDERSTATE_STENCILWRITEMASK D3DRENDERSTATE_TEXTUREFACTOR D3DRENDERSTATE_WRAP0 D3DRENDERSTATE_WRAP1 D3DRENDERSTATE_WRAP2 D3DRENDERSTATE_WRAP3 D3DRENDERSTATE_WRAP4 D3DRENDERSTATE_WRAP5 D3DRENDERSTATE_WRAP6 D3DRENDERSTATE_ WRAP7 D3DRS_COLORWRITEENABLE D3DRS_BLENDOP D3DTSS_COLOROP D3DTSS_COLORARG1 D3DTSS_COLORARG2 D3DTSS_ALPHAOP D3DTSS_ALPHAARG1 D3DTSS_ALPHAARG2 D3DTSS_BUMPENVMAT00 D3DTSS_BUMPENVMAT01 D3DTSS_BUMPENVMAT10 D3DTSS_BUMPENVMAT11 D3DTSS_TEXCOORDINDEX D3DTSS_ADDRESSU D3DTSS_ADDRESSV D3DTSS_BORDERCOLOR D3DTSS_MAGFILTER D3DTSS_MINFILTER D3DTSS_MIPFILTER D3DTSS_MIPMAPLODBIAS D3DTSS_MAXMIPLEVEL D3DTSS_MAXANISOTROPY D3DTSS_BUMPENVLSCALE D3DTSS_BUMPENVLOFFSET D3DTSS_ TEXTURETRANSFORMFLAGS D3DTSS_ADDRESSW D3DTSS_COLORARG0 D3DTSS_ALPHAARG0 D3DTSS_RESULTARG
D3DSBT_VERTEXSTATE Le pilote doit capturer uniquement l’état du vertex.
Lors de la capture de l’état du vertex en mode appareil pur, le pilote doit capturer (enregistrer) tous les voyants utilisés avant la création du bloc d’état, le handle du nuanceur de vertex actuel, les constantes de nuanceur de vertex actuelles, ainsi que les états de rendu et d’étape de texture suivants liés au traitement des vertex :
D3DRENDERSTATE_SHADEMODE D3DRENDERSTATE_SPECULARENABLE D3DRENDERSTATE_CULLMODE D3DRENDERSTATE_FOGENABLE D3DRENDERSTATE_FOGCOLOR D3DRENDERSTATE_FOGTABLEMODE D3DRENDERSTATE_FOGSTART D3DRENDERSTATE_FOGEND D3DRENDERSTATE_FOGDENSITY D3DRENDERSTATE_RANGEFOGENABLE D3DRENDERSTATE_AMBIENT D3DRENDERSTATE_COLORVERTEX D3DRENDERSTATE_FOGVERTEXMODE D3DRENDERSTATE_CLIPPING D3DRENDERSTATE_LIGHTING D3DRENDERSTATE_NORMALIZENORMALS D3DRENDERSTATE_LOCALVIEWER D3DRENDERSTATE_ EMISSIVEMATERIALSOURCE D3DRENDERSTATE_AMBIENTMATERIALSOURCE D3DRENDERSTATE_DIFFUSEMATERIALSOURCE D3DRENDERSTATE_SPECULARMATERIALSOURCE D3DRENDERSTATE_VERTEXBLEND D3DRENDERSTATE_CLIPPLANEENABLE D3DRS_SOFTWAREVERTEXPROCESSING D3DRS_POINTSIZE D3DRS_POINTSIZE_MIN D3DRS_POINTSPRITEENABLE D3DRS_POINTSCALEENABLE D3DRS_POINTSCALE_A D3DRS_POINTSCALE_B D3DRS_POINTSCALE_C D3DRS_MULTISAMPLEANTIALIAS D3DRS_MULTISAMPLEMASK D3DRS_PATCHEDGESTYLE D3DRS_PATCHSEGMENTS D3DRS_ POINTSIZE_MAX D3DRS_INDEXEDVERTEXBLENDENABLE D3DRS_TWEENFACTOR D3DTSS_TEXCOORDINDEX D3DTSS_TEXTURETRANSFORMFLAGS
NULL Aucun groupe d’états prédéfini n’est spécifié.

[in/out] hStateSet

Handle pour le bloc d’état qui est manipulé par l’opération spécifiée dans le membre Operation .

Un handle de bloc d’état est passé dans un appel à la fonction StateSet du pilote d’affichage en mode utilisateur lorsque Operation a la valeur D3DHAL_STATESETEXECUTE.

La fonction StateSet retourne le handle de bloc d’état lorsque Operation a la valeur D3DHAL_STATESETBEGIN et D3DHAL_STATESETCREATE.

Remarques

Si le pilote d’affichage en mode utilisateur implémente des états de rendu étendus (c’est-à-dire des états de rendu au-delà de ceux que le runtime Microsoft Direct3D fournit), le pilote utilise le membre StateBlockType pour déterminer le type d’état de rendu prédéfini utilisé. À partir de ces informations, le pilote peut déterminer comment ajouter le bloc d’état de manière appropriée pour prendre en charge ses extensions.

Le membre StateBlockType est valide uniquement pour les opérations D3DHAL_STATESETBEGIN, D3DHAL_STATESETEND et D3DHAL_STATECREATE. Pour plus d’informations sur le type d’énumération D3DSTATEBLOCKTYPE, consultez la documentation Microsoft Windows SDK.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

StateSet