Enregistrement des états de vertex avec un StateBlock (Direct3D 9)
Un bloc d’état peut être utilisé pour capturer uniquement l’état de vertex (consultez État d’enregistrement et de restauration des blocs d’état (Direct3D 9)). L’état suivant est l’état de vertex :
- État du rendu du vertex (consultez Pipeline de vertex : état de rendu).
- État de l’échantillonneur de vertex (consultez Pipeline de vertex : État de l’échantillonneur).
- État de texture de vertex (consultez Pipeline de vertex : état de texture).
- Segments en mode NPatch de IDirect3DDevice9::SetNPatchMode.
- Chaque lumière de IDirect3DDevice9::SetLight, ainsi que si la lumière est activée ou non avec IDirect3DDevice9::LightEnable.
- Nuanceur de vertex actuel et chacune des constantes de nuanceur de vertex.
- Pour chaque flux de vertex, stockez la valeur de diviseur à partir de IDirect3DDevice9::SetStreamSourceFreq.
- Déclaration de vertex actuelle.
Pour capturer l’état de vertex avec un bloc d’état, spécifiez D3DSBT_VERTEXSTATE lors de l’appel de IDirect3DDevice9::CreateStateBlock.
Pipeline de vertex : état de rendu
Les états de rendu de l’appareil affectent le comportement de presque chaque partie du pipeline. Les états de rendu sont définis en appelant IDirect3DDevice9::SetRenderState.
Le tableau suivant inclut tous les états de rendu qui configurent l’état de vertex :
États de rendu | Valeur par défaut |
---|---|
D3DRS_CULLMODE | D3DCULL_CCW |
D3DRS_FOGCOLOR | 0 |
D3DRS_FOGTABLEMODE | D3DFOG_NONE |
D3DRS_FOGSTART | 0 |
D3DRS_FOGEND | 1 |
D3DRS_FOGDENSITY | 1 |
D3DRS_RANGEFOGENABLE | FALSE |
D3DRS_AMBIENT | 0 |
D3DRS_COLORVERTEX | TRUE |
D3DRS_FOGVERTEXMODE | D3DFOG_NONE |
D3DRS_CLIPPING | TRUE |
D3DRS_LIGHTING | TRUE |
D3DRS_LOCALVIEWER | TRUE |
D3DRS_EMISSIVEMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_AMBIENTMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_DIFFUSEMATERIALSOURCE | D3DMCS_COLOR1 |
D3DRS_SPECULARMATERIALSOURCE | D3DMCS_COLOR2 |
D3DRS_VERTEXBLEND | D3DVBF_DISABLE |
D3DRS_CLIPPLANEENABLE | 0 |
D3DRS_POINTSIZE | Dépendant du pilote |
D3DRS_POINTSIZE_MIN | 1 |
D3DRS_POINTSPRITEENABLE | FALSE |
D3DRS_POINTSCALEENABLE | FALSE |
D3DRS_POINTSCALE_A | 1 |
D3DRS_POINTSCALE_B | 0 |
D3DRS_POINTSCALE_C | 0 |
D3DRS_MULTISAMPLEANTIALIAS | TRUE |
D3DRS_MULTISAMPLEMASK | 0xffffffff |
D3DRS_PATCHEDGESTYLE | D3DPATCHEDGE_DISCRETE |
D3DRS_POINTSIZE_MAX | 1 |
D3DRS_INDEXEDVERTEXBLENDENABLE | FALSE |
D3DRS_TWEENFACTOR | 0 |
D3DRS_POSITIONDEGREE | D3DDEGREE_CUBIC |
D3DRS_NORMALDEGREE | D3DDEGREE_LINEAR |
D3DRS_MINTESSELLATIONLEVEL | 1 |
D3DRS_MAXTESSELLATIONLEVEL | 1 |
D3DRS_ADAPTIVETESS_X | 0 |
D3DRS_ADAPTIVETESS_Y | 0 |
D3DRS_ADAPTIVETESS_Z | 1 |
D3DRS_ADAPTIVETESS_W | 0 |
D3DRS_ENABLEADAPTIVETESSELLATION"/> | FALSE |
Pipeline de vertex : état de l’échantillonneur
Les états de l’échantillonneur contrôlent les rubriques liées à l’échantillonnage, telles que le filtrage, le mosaïde et les modes d’adresse de coordonnées de texture. Utilisez IDirect3DDevice9::SetSamplerState pour configurer l’état de l’échantillonneur (y compris celui utilisé dans l’unité tessellator pour échantillonner les mappages de déplacement). Les états de l’échantillonneur ont été renommés avec un préfixe « D3DSAMP_ » pour activer la détection des erreurs de compilation lors du portage à partir de DirectX 8.
Le tableau suivant inclut tous les états de l’échantillonneur qui configurent l’état du vertex :
États de l’échantillonneur | Valeur par défaut |
---|---|
D3DSAMP_DMAPOFFSET | 256 |
Pipeline de vertex : état de texture
Les états de texture contrôlent les opérations de fusion de textures du mélangeur multi texture. Utilisez IDirect3DDevice9::SetTextureStageState pour configurer les états de texture. Utilisez IDirect3DDevice9::SetTexture pour associer une texture à une étape d’échantillonneur.
Le tableau suivant inclut tous les états de texture qui configurent l’état du vertex :
États de texture | Valeur par défaut |
---|---|
D3DTSS_TEXCOORDINDEX | 0 |
D3DTSS_TEXTURETRANSFORMFLAGS | D3DTTFF_DISABLE |
D3DTSS_TEXCOORDINDEX est un état de traitement de vertex de fonction fixe. Si un nuanceur de vertex programmable est utilisé, cet état est ignoré.
Rubriques connexes