使用 StateBlock 保存像素状态 (Direct3D 9)
状态块只能用于捕获像素状态 (请参阅 状态块保存和还原状态 (Direct3D 9) ) 。 以下状态为像素状态:
- 像素呈现状态 (请参阅 像素管道:呈现状态) 。
- 像素纹理状态 (请参阅 像素管道:纹理状态) 。
- 像素采样器状态 (请参阅 像素管道:采样器状态) 。
- 当前像素着色器以及每个像素着色器常量。
若要使用状态块捕获像素状态,请在调用 IDirect3DDevice9::CreateStateBlock 时指定D3DSBT_PIXELSTATE。
像素管道:呈现状态
设备呈现状态会影响管道几乎每个部分的行为。 通过调用 IDirect3DDevice9::SetRenderState 设置呈现状态。
下表包含设置像素状态的所有呈现状态:
呈现状态 | 默认值 |
---|---|
D3DRS_ZENABLE | D3DZB_FALSE |
D3DRS_SPECULARENABLE | FALSE |
D3DFILLMODE | D3DFILL_SOLID |
D3DSHADEMODE | D3DSHADE_GOURAUD |
D3DRS_ZWRITEENABLE | TRUE |
D3DRS_ALPHATESTENABLE | FALSE |
D3DRS_LASTPIXEL | TRUE |
D3DRS_SRCBLEND | D3DBLEND_ONE |
D3DRS_DESTBLEND | D3DBLEND_ZERO |
D3DRS_ZFUNC | D3DCMP_LESSEQUAL |
D3DRS_ALPHAREF | 0 |
D3DRS_ALPHAFUNC | D3DCMP_ALWAYS |
D3DRS_DITHERENABLE | FALSE |
D3DRS_FOGSTART | 0 |
D3DRS_FOGEND | 1 |
D3DRS_FOGDENSITY | 1 |
D3DRS_ALPHABLENDENABLE | FALSE |
D3DRS_DEPTHBIAS | 0 |
D3DRS_STENCILENABLE | FALSE |
D3DRS_STENCILFAIL | D3DSTENCILOP_KEEP |
D3DRS_STENCILZFAIL | D3DSTENCILOP_KEEP |
D3DRS_STENCILPASS | D3DSTENCILOP_KEEP |
D3DRS_STENCILFUNC | D3DCMP_ALWAYS |
D3DRS_STENCILREF | 0 |
D3DRS_STENCILMASK | 0xffffffff |
D3DRS_STENCILWRITEMASK | 0xffffffff |
D3DRS_TEXTUREFACTOR | 0xffffffff |
D3DRS_WRAP0 | 0 |
D3DRS_WRAP1 | 0 |
D3DRS_WRAP2 | 0 |
D3DRS_WRAP3 | 0 |
D3DRS_WRAP4 | 0 |
D3DRS_WRAP5 | 0 |
D3DRS_WRAP6 | 0 |
D3DRS_WRAP7 | 0 |
D3DRS_WRAP8 | 0 |
D3DRS_WRAP9 | 0 |
D3DRS_WRAP10 | 0 |
D3DRS_WRAP11 | 0 |
D3DRS_WRAP12 | 0 |
D3DRS_WRAP13 | 0 |
D3DRS_WRAP14 | 0 |
D3DRS_WRAP15 | 0 |
D3DRS_LOCALVIEWER | TRUE |
D3DRS_EMISSIVEMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_AMBIENTMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_DIFFUSEMATERIALSOURCE | D3DMCS_COLOR1 |
D3DRS_SPECULARMATERIALSOURCE | D3DMCS_COLOR2 |
D3DRS_COLORWRITEENABLE | 0x0000000f |
D3DBLENDOP | D3DBLENDOP_ADD |
D3DRS_SCISSORTESTENABLE | FALSE |
D3DRS_SLOPESCALEDEPTHBIAS | 0 |
D3DRS_ANTIALIASEDLINEENABLE | FALSE |
D3DRS_TWOSIDEDSTENCILMODE | FALSE |
D3DRS_CCW_STENCILFAIL | D3DSTENCILOP_KEEP |
D3DRS_CCW_STENCILZFAIL | D3DSTENCILOP_KEEP |
D3DRS_CCW_STENCILPASS | D3DSTENCILOP_KEEP |
D3DRS_CCW_STENCILFUNC | D3DCMP_ALWAYS |
D3DRS_COLORWRITEENABLE1 | 0x0000000f |
D3DRS_COLORWRITEENABLE2 | 0x0000000f |
D3DRS_COLORWRITEENABLE3 | 0x0000000f |
D3DRS_BLENDFACTOR | 0xffffffff |
D3DRS_SRGBWRITEENABLE | 0 |
D3DRS_SEPARATEALPHABLENDENABLE | FALSE |
D3DRS_SRCBLENDALPHA | D3DBLEND_ONE |
D3DRS_DESTBLENDALPHA | D3DBLEND_ZERO |
D3DRS_BLENDOPALPHA | D3DBLENDOP_ADD |
像素管道:采样器状态
采样器状态控制采样相关主题,例如筛选、平铺和纹理坐标寻址模式。 使用 IDirect3DDevice9::SetSamplerState 设置采样器状态 (包括细化器单元中使用的采样器状态,以) 采样位移映射。 采样器状态已重命名为“D3DSAMP_”前缀,以便在从 DirectX 8 移植时启用编译时错误检测。
下表包含设置像素状态的所有采样器状态:
采样器状态 | 默认值 |
---|---|
D3DSAMP_ADDRESSU | D3DTADDRESS_WRAP |
D3DSAMP_ADDRESSV | D3DTADDRESS_WRAP |
D3DSAMP_ADDRESSW | D3DTADDRESS_WRAP |
D3DSAMP_BORDERCOLOR | 0x00000000 |
D3DSAMP_MAGFILTER | D3DTEXF_POINT |
D3DSAMP_MINFILTER | D3DTEXF_POINT |
D3DSAMP_MIPFILTER | D3DTEXF_NONE |
D3DSAMP_MIPMAPLODBIAS | 0 |
D3DSAMP_MAXMIPLEVEL | 0 |
D3DSAMP_MAXANISOTROPY | 1 |
D3DSAMP_SRGBTEXTURE | 0 |
D3DSAMP_ELEMENTINDEX | 0 |
像素管道:纹理状态
纹理状态控制多纹理混合器纹理混合操作。 使用 IDirect3DDevice9::SetTextureStageState 设置纹理阶段状态。 使用 IDirect3DDevice9::SetTexture 将纹理与采样器阶段相关联。
下表包含设置像素状态的所有纹理状态:
纹理状态 | 默认值 |
---|---|
D3DTSS_COLOROP | D3DTOP_DISABLE |
D3DTSS_COLORARG1 | D3DTA_TEXTURE |
D3DTSS_COLORARG2 | D3DTA_CURRENT |
D3DTSS_ALPHAOP | D3DTOP_DISABLE |
D3DTSS_ALPHAARG1 | D3DTA_TEXTURE |
D3DTSS_ALPHAARG2 | D3DTA_CURRENT |
D3DTSS_BUMPENVMAT00 | 0 |
D3DTSS_BUMPENVMAT01 | 0 |
D3DTSS_BUMPENVMAT10 | 0 |
D3DTSS_BUMPENVMAT11 | 0 |
D3DTSS_TEXCOORDINDEX | 0 |
D3DTSS_BUMPENVLSCALE | 0 |
D3DTSS_BUMPENVLOFFSET | 0 |
D3DTSS_TEXTURETRANSFORMFLAGS | D3DTTFF_DISABLE |
D3DTSS_COLORARG0 | D3DTA_CURRENT |
D3DTSS_ALPHAARG0 | D3DTA_CURRENT |
D3DTSS_RESULTARG | D3DTA_CURRENT |
相关主题