Tipo de amostra
Use a sintaxe a seguir para declarar o estado do sampler, bem como o estado sampler-comparison.
Diferenças entre o Direct3D 9 e o Direct3D 10 e posterior: Aqui está a sintaxe de um sampler no Direct3D 9.
A sintaxe de um sampler no Direct3D 10 e posterior é alterada ligeiramente para dar suporte a objetos de textura e matrizes de amostragem.
|
Parâmetros
-
Sampler
-
Somente Direct3D 9. Palavra-chave obrigatório.
-
Nome
-
Cadeia de caracteres ASCII que identifica exclusivamente o nome da variável de amostra.
-
[Índice]
-
Somente Direct3D 10 e posterior. Tamanho opcional da matriz; um inteiro positivo maior ou igual a 1.
-
SamplerType
-
[in] O tipo de amostra, que é um dos seguintes: sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState.
Diferenças entre o Direct3D 9 e o Direct3D 10 e posterior:
- O Direct3D 10 e posterior dá suporte a um tipo de amostra adicional: SamplerComparisonState.
-
Textura = <texture_variable>;
-
Somente Direct3D 9. Uma variável de textura. A palavra-chave Textura é necessária no lado esquerdo; o nome da variável pertence ao lado direito da expressão dentro dos colchetes angulares.
-
state_name = state_value
-
[in] Atribuições de estado opcionais. O lado esquerdo de uma atribuição é um nome de estado, o lado direito é o valor de estado. Todas as atribuições de estado devem aparecer dentro de um bloco de instrução (entre colchetes). Cada instrução é separada por ponto e vírgula. A tabela a seguir lista os possíveis nomes de estado.
// sampler state AddressU AddressV AddressW BorderColor Filter MaxAnisotropy MaxLOD MinLOD MipLODBias // sampler-comparison state ComparisonFunc
O lado direito de cada expressão é o valor atribuído a cada estado. Consulte a estrutura D3D11_SAMPLER_DESC para obter os valores de estado possíveis para Direct3D 11. Há uma relação de 1 a 1 entre os nomes de estado e os membros da estrutura. Veja o exemplo a seguir.
Comentários
Quando você implementa um efeito, o estado do sampler é um dos vários tipos de estado que talvez seja necessário configurar no pipeline para renderização. Para obter uma lista de todos os estados possíveis que você pode definir em um efeito, consulte:
- O Direct3D 10 usa grupos de estado.
- O Direct3D 9 usa estados individuais.
Exemplo
Diferenças entre o Direct3D 9 e o Direct3D 10: Aqui está um exemplo parcial de um sampler do Direct3D 9 do BasicHLSL Sample.
Aqui está um exemplo parcial de um sampler do Direct3D 10 do Exemplo BasicHLSL10.
|
Aqui está um exemplo parcial de declaração do estado de comparação de amostra e chamada de um sampler de comparação no Direct3D 10.
SamplerComparisonState ShadowSampler
{
// sampler state
Filter = COMPARISON_MIN_MAG_LINEAR_MIP_POINT;
AddressU = MIRROR;
AddressV = MIRROR;
// sampler comparison state
ComparisonFunc = LESS;
};
float3 vModProjUV;
...
float fShadow = g_ShadowMap.SampleCmpLevelZero( ShadowSampler, vModProjUV.xy, vModProjUV.z);