使用 StateBlock 保存顶点状态 (Direct3D 9)

状态块只能用于捕获顶点状态 (请参阅状态 块保存和还原状态 (Direct3D 9) ) 。 以下状态为顶点状态:

若要使用状态块捕获顶点状态,请在调用 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是固定函数顶点处理状态。 如果使用可编程顶点着色器,则忽略此状态。

状态块保存和还原状态