使用 StateBlock 保存顶点状态 (Direct3D 9)
状态块只能用于捕获顶点状态 (请参阅状态 块保存和还原状态 (Direct3D 9) ) 。 以下状态为顶点状态:
- 顶点呈现状态 (请参阅 顶点管道:呈现状态) 。
- 顶点采样器状态 (请参阅 顶点管道:采样器状态) 。
- 顶点纹理状态 (请参阅 顶点管道:纹理状态) 。
- IDirect3DDevice9::SetNPatchMode 中的 NPatch 模式段。
- IDirect3DDevice9::SetLight 中的每盏灯,以及是否使用 IDirect3DDevice9::LightEnable 启用灯。
- 当前顶点着色器以及每个顶点着色器常量。
- 对于每个顶点流,存储 IDirect3DDevice9::SetStreamSourceFreq 中的分隔符值。
- 当前顶点声明。
若要使用状态块捕获顶点状态,请在调用 IDirect3DDevice9::CreateStateBlock 时指定D3DSBT_VERTEXSTATE。
顶点管道:呈现状态
设备呈现状态会影响管道几乎每个部分的行为。 通过调用 IDirect3DDevice9::SetRenderState 设置呈现状态。
下表包含设置顶点状态的所有呈现状态:
呈现状态 | 默认值 |
---|---|
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 | 依赖驱动程序 |
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 |
顶点管道:采样器状态
采样器状态控制采样相关主题,例如筛选、平铺和纹理坐标寻址模式。 使用 IDirect3DDevice9::SetSamplerState 设置采样器状态 (包括细化器单元中使用的采样器状态,以) 采样位移映射。 采样器状态已重命名为“D3DSAMP_”前缀,以便在从 DirectX 8 移植时启用编译时错误检测。
下表包含设置顶点状态的所有采样器状态:
采样器状态 | 默认值 |
---|---|
D3DSAMP_DMAPOFFSET | 256 |
顶点管道:纹理状态
纹理状态控制多纹理混合器纹理混合操作。 使用 IDirect3DDevice9::SetTextureStageState 设置纹理状态。 使用 IDirect3DDevice9::SetTexture 将纹理与采样器阶段相关联。
下表包含设置顶点状态的所有纹理状态:
纹理状态 | 默认值 |
---|---|
D3DTSS_TEXCOORDINDEX | 0 |
D3DTSS_TEXTURETRANSFORMFLAGS | D3DTTFF_DISABLE |
D3DTSS_TEXCOORDINDEX是固定函数顶点处理状态。 如果使用可编程顶点着色器,则忽略此状态。
相关主题