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.
sampler Name = SamplerType{ Texture = <texture_variable>; [state_name = state_value;] ... };

A sintaxe de um sampler no Direct3D 10 e posterior é alterada ligeiramente para dar suporte a objetos de textura e matrizes de amostragem.

SamplerType Name[Index]{ [state_name = state_value;] ... };

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:

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.
sampler MeshTextureSampler = 
sampler_state
{
    Texture = <g_MeshTexture>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

Aqui está um exemplo parcial de um sampler do Direct3D 10 do Exemplo BasicHLSL10.

SamplerState MeshTextureSampler
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

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);

Confira também

Tipos de dados (DirectX HLSL)