structure D3DHAL_DP2STATESET (d3dhal.h)

La structure D3DHAL_DP2STATESET est utilisée pour informer le pilote des opérations d’ensemble d’états à effectuer.

Syntaxe

typedef struct _D3DHAL_DP2STATESET {
  DWORD             dwOperation;
  DWORD             dwParam;
  D3DSTATEBLOCKTYPE sbType;
} D3DHAL_DP2STATESET;

Membres

dwOperation

Spécifie l'opération à exécuter. La valeur de ce membre peut être l’une des suivantes :

Valeur Signification
D3DHAL_STATESETBEGIN Spécifie le début de l’ensemble d’états référencé par dwParam.
D3DHAL_STATESETCAPTURE Spécifie que la capture doit être effectuée. Lorsque cet indicateur est spécifié, le pilote doit capturer une instantané de l’état actuel qui correspond au bloc d’état référencé par le handle passé dans dwParam. Autrement dit, seul l’état spécifié dans le bloc d’état est capturé. Pour plus d’informations importantes sur la capture d’état, consultez Gestion accélérée de l’état.
D3DHAL_STATESETCREATE DirectX 8.0 et versions ultérieures uniquement.
À la réception de cette demande, le pilote doit créer un bloc d’état du type donné dans le champ sbType. Les informations à enregistrer pour chaque type de bloc d’état sont décrites ci-dessous.
D3DHAL_STATESETDELETE Spécifie que l’ensemble d’états référencé par dwParam doit être supprimé.
D3DHAL_STATESETEND Spécifie la fin de l’ensemble d’états référencé par dwParam.
D3DHAL_STATESETEXECUTE Spécifie que l’ensemble d’états référencé par dwParam doit être exécuté.

dwParam

Spécifie le handle d’ensemble d’états qui fait référence au bloc d’état en cours de manipulation avec le dwOperation actuel.

sbType

Spécifie le type de bloc d’état. Le pilote doit ignorer ce membre, sauf s’il implémente des extensions d’état de rendu ou implémente la prise en charge des appareils purs (DirectX 8.0 et versions ultérieures uniquement).

Si le pilote implémente des états de rendu étendus, c’est-à-dire des états de rendu au-delà de ceux que le runtime Direct3D fournit, il peut utiliser sbType pour déterminer les types d’états de rendu prédéfinis utilisés. À 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 sbType , qui est valide uniquement pour D3DHAL_STATESETBEGIN, D3DHAL_STATESETEND et D3DHAL_STATECREATE, spécifie le type de bloc d’état avec l’un des types D3DSTATEBLOCKTYPE énumérés suivants. Pour plus d’informations, consultez la documentation du Kit de développement logiciel (SDK) DirectX.

D3DSBT_ALL

Indique au pilote de capturer tous les états.

Lorsqu’il est demandé de capturer tout l’état 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.

L’état qui doit être capturé est le suivant : les états de rendu répertoriés ci-dessous, les états d’étape de texture répertoriés ci-dessous, 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 d’clip utilisateur, le matériau actuel, toutes les lumières qui ont été utilisées avant la création du bloc d’état, le manche du nuanceur de vertex actuel, le manche du nuanceur de pixels actuel, les constantes actuelles du nuanceur de vertex et les constantes actuelles du nuanceur de pixels.

Les états de rendu à enregistrer sont les 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

Les états de l’étape de texture à enregistrer sont les 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

Indique au pilote de capturer uniquement l’état des pixels.

Lors de la capture de l’état de pixels en mode appareil pur, l’état suivant doit être capturé : les états de rendu associés au traitement des pixels répertoriés ci-dessous, les états de l’étape de texture de traitement des pixels répertoriés ci-dessous, le handle de nuanceur de pixels actuel et les constantes actuelles du nuanceur de pixels.

Les états de rendu à enregistrer sont les 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

Les états de l’étape de texture à enregistrer sont les 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_VERTEXSTATE

Indique au pilote de capturer uniquement l’état de vertex.

Lors de la capture de l’état de vertex en mode appareil pur, l’état suivant doit être capturé : les états de rendu associés au traitement des vertex répertoriés ci-dessous, les états d’étape de texture de traitement des vertex répertoriés ci-dessous, tous les voyants qui ont été utilisés avant la création du bloc d’état, le handle de nuanceur de vertex actuel et les constantes actuelles du nuanceur de vertex.

Les états de rendu à enregistrer sont les suivants :

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

Les états de l’étape de texture à enregistrer sont les suivants :

D3DTSS_TEXCOORDINDEX
D3DTSS_TEXTURETRANSFORMFLAGS

NULL

Aucun groupe d’états prédéfini n’est spécifié.

Remarques

Pour plus d’informations sur l’utilisation de cette structure dans la gestion des blocs d’état, consultez Gestion accélérée de l’état dans le Guide de conception graphique.

Configuration requise

Condition requise Valeur
En-tête d3dhal.h (inclure D3dhal.h)