效果状态组 (Direct3D 10)
效果状态是表达式形式的名称/值对。
混合状态
效果状态 | Group |
---|---|
ALPHATOCOVERAGEENABLE、 BLENDENABLE、 SRCBLEND、 DESTBLEND、 BLENDOP、 SRCBLENDALPHA、 DESTBLENDALPHA、 BLENDOPALPHA、 RENDERTARGETWRITEMASK | D3D10_BLEND_DESC 的成员 |
深度和模具状态
效果状态 | Group |
---|---|
DEPTHENABLE、 DEPTHWRITEMASK、 DEPTHFUNC、 STENCILENABLE、 STENCILREADMASK、 STENCILWRITEMASK | D3D10_DEPTH_STENCIL_DESC 的成员 |
FRONTFACESTENCILFAIL、 FRONTFACESTENCILZFAIL、 FRONTFACESTENCILPASS、 FRONTFACESTENCILFUNC、 BACKFACESTENCILFAILFAIL、 BACKFACESTENCILZFAIL、 BACKFACESTENCILPASS、 BACKFACESTENCILFUNC | D3D10_DEPTH_STENCILOP_DESC 的成员 |
光栅器状态
效果状态 | Group |
---|---|
FILLMODE | D3D10_FILL_MODE |
CULLMODE | D3D10_CULL_MODE |
FRONTCOUNTERCLOCKWISE、 DEPTHBIAS、 DEPTHBIASCLAMP、 SLOPESCALEDDEPTHBIAS、 ZCLIPENABLE、 SCISSORENABLE、 MULTISAMPLEENABLE、 ANTIALIASEDLINEENABLE | D3D10_RASTERIZER_DESC 的成员 |
取样器状态
效果状态 | Group |
---|---|
Filter、 AddressU、 AddressV、 AddressW、 MipLODBias、 MaxAnisotropy、 ComparisonFunc、 BorderColor、 MinLOD、 MaxLOD | D3D10_SAMPLER_DESC 的成员 |
有关示例 ,请参阅 DirectX HLSL) (采样器类型 。
效果对象状态
此效果对象 | 映射到 |
---|---|
RASTERIZERSTATE | 光栅器状态对象。 |
DEPTHSTENCILSTATE | 深度和模具状态状态对象。 |
BLENDSTATE | 混合状态状态对象。 |
VERTEXSHADER | 已编译的顶点着色器对象。 |
PIXELSHADER | 已编译的像素着色器对象。 |
GEOMETRYSHADER | 已编译的几何着色器对象。 |
DS_STENCILREF AB_BLENDFACTOR AB_SAMPLEMASK | D3D10_PASS_DESC的成员。 |
定义和使用状态对象
状态对象以以下格式在 FX 文件中声明。 StateObjectType 是上面列出的状态之一, MemberName 是具有非默认值的任何成员的名称。
StateObjectType ObjectName {
MemberName = value;
...
MemberName = value;
};
例如,若要设置 AlphaToCoverageEnable 和 BlendEnable[0] 设置为 FALSE 的混合状态对象,将使用以下代码。
BlendState NoBlend {
AlphaToCoverageEnable = FALSE;
BlendEnable[0] = FALSE;
};
状态对象使用 效果技术语法 (Direct3D 10) 中所述的 SetStateGroup 函数之一应用于技术传递。 例如,若要应用上述 BlendState 对象,将使用以下代码。
SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
有关描述状态用法的教程,请参阅 状态管理。