Grupos de estado de efeito (Direct3D 10)

Os estados de efeito são pares nome-valor na forma de uma expressão.

Estado de combinação

Estado do efeito Grupo
ALPHATOCOVERAGEENABLE, BLENDENABLE, SRCBLEND, DESTBLEND, BLENDOP, SRCBLENDALPHA, DESTBLENDALPHA, BLENDOPALPHA, RENDERTARGETWRITEMASK Membros do D3D10_BLEND_DESC

Estado de profundidade e estêncil

Estado do efeito Grupo
DEPTHENABLE, DEPTHWRITEMASK, DEPTHFUNC, STENCILENABLE, STENCILREADMASK, STENCILWRITEMASK Membros do D3D10_DEPTH_STENCIL_DESC
FRONTFACESTENCILFAIL, FRONTFACESTENCILZFAIL, FRONTFACESTENCILPASS, FRONTFACESTENCILFUNC, BACKFACESTENCILFAIL, BACKFACESTENCILZFAIL, BACKFACESTENCILPASS, BACKFACESTENCILFUNC Membro do D3D10_DEPTH_STENCILOP_DESC

Estado do rasterizador

Estado do efeito Grupo
FILLMODE D3D10_FILL_MODE
CULLMODE D3D10_CULL_MODE
FRONTCOUNTERCLOCKWISE, DEPTHBIAS, DEPTHBIASCLAMP, SLOPESCALEDDEPTHBIAS, ZCLIPENABLE, SCISSORENABLE, MULTISAMPLEENABLE, ANTIALIASEDLINEENABLE Membros do D3D10_RASTERIZER_DESC

Estado de amostra

Estado do efeito Grupo
Filter, AddressU, AddressV, AddressW, MipLODBias, MaxAnisotropy, ComparisonFunc, BorderColor, MinLOD, MaxLOD Membros do D3D10_SAMPLER_DESC

Consulte Tipo de amostra (DirectX HLSL) para obter exemplos.

Estado do objeto Effect

Este objeto de efeito É mapeada para
RASTERIZERSTATE Um objeto de estado do rasterizador .
DEPTHSTENCILSTATE Um objeto de estado de profundidade e estêncil .
BLENDSTATE Um objeto de estado blend state .
VERTEXSHADER Um objeto de sombreador de vértice compilado.
PIXELSHADER Um objeto de sombreador de pixel compilado.
GEOMETRYSHADER Um objeto de sombreador de geometria compilado.
DS_STENCILREF AB_BLENDFACTOR AB_SAMPLEMASK Membros do D3D10_PASS_DESC.

Definindo e usando objetos de estado

Os objetos de estado são declarados em arquivos FX no formato a seguir. StateObjectType é um dos estados listados acima e MemberName é o nome de qualquer membro que terá um valor não padrão.

StateObjectType ObjectName {
 MemberName = value;
 ...
 MemberName = value;
};

Por exemplo, para configurar um objeto de estado de combinação com AlphaToCoverageEnable e BlendEnable[0] definidos como FALSE, o código a seguir seria usado.

BlendState NoBlend {
 AlphaToCoverageEnable = FALSE;
 BlendEnable[0] = FALSE;
};

O objeto state é aplicado a uma passagem de técnica usando uma das funções SetStateGroup descritas em Sintaxe de técnica de efeito (Direct3D 10). Por exemplo, para aplicar o objeto BlendState descrito acima, o código a seguir seria usado.

SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );

Para obter um tutorial que descreve o uso de estados, consulte Gerenciamento de estado.