Guardar estados de vértice con un StateBlock (Direct3D 9)
Se puede usar un bloque de estado para capturar solo el estado de vértice (consulte State Blocks Save and Restore State (Direct3D 9)). El siguiente estado es el estado de vértice:
- Estado de representación de vértices (consulte Canalización de vértices: Estado de representación).
- Estado del muestreador de vértices (consulte Canalización de vértices: estado del sampler).
- Estado de textura de vértice (consulte Canalización de vértices: estado de textura).
- Segmentos del modo NPatch de IDirect3DDevice9::SetNPatchMode.
- Cada luz de IDirect3DDevice9::SetLight, así como si la luz está habilitada o no con IDirect3DDevice9::LightEnable.
- Sombreador de vértices actual y cada una de las constantes del sombreador de vértices.
- Para cada secuencia de vértices, almacene el valor del divisor de IDirect3DDevice9::SetStreamSourceFreq.
- Declaración de vértice actual.
Para capturar el estado de vértice con un bloque de estado, especifique D3DSBT_VERTEXSTATE al llamar a IDirect3DDevice9::CreateStateBlock.
Canalización de vértices: estado de representación
Los estados de representación del dispositivo afectan al comportamiento de casi todas las partes de la canalización. Los estados de representación se establecen llamando a IDirect3DDevice9::SetRenderState.
En la tabla siguiente se incluyen todos los estados de representación que configuran el estado del vértice:
Estados de representación | Valor predeterminado |
---|---|
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 | Dependiente del controlador |
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 |
Canalización de vértices: estado del sampler
Los estados de sampler controlan los temas relacionados con el muestreo, como el filtrado, el mosaico y los modos de dirección de coordenadas de textura. Use IDirect3DDevice9::SetSamplerState para configurar el estado del muestreador (incluido el usado en la unidad de teselador para muestrear mapas de desplazamiento). Se ha cambiado el nombre de los estados del sampler con un prefijo "D3DSAMP_" para habilitar la detección de errores en tiempo de compilación al migrar desde DirectX 8.
En la tabla siguiente se incluyen todos los estados del sampler que configuran el estado del vértice:
Estados del sampler | Valor predeterminado |
---|---|
D3DSAMP_DMAPOFFSET | 256 |
Canalización de vértices: estado de textura
Los estados de textura controlan las operaciones de combinación de texturas del combinador de varias texturas. Use IDirect3DDevice9::SetTextureStageState para configurar estados de textura. Use IDirect3DDevice9::SetTexture para asociar una textura a una fase del muestreador.
En la tabla siguiente se incluyen todos los estados de textura que configuran el estado de vértice:
Estados de textura | Valor predeterminado |
---|---|
D3DTSS_TEXCOORDINDEX | 0 |
D3DTSS_TEXTURETRANSFORMFLAGS | D3DTTFF_DISABLE |
D3DTSS_TEXCOORDINDEX es un estado fijo de procesamiento de vértices de función. Si se usa un sombreador de vértices programables, este estado se omite.
Temas relacionados