Тип sampler

Используйте следующий синтаксис, чтобы объявить состояние sampler, а также состояние сравнения sampler.

Различия между Direct3D 9 и Direct3D 10 и более поздними версиями:
Ниже приведен синтаксис для примера в Direct3D 9.
sampler NameSamplerType = { Texture = < texture_variable>; [state_name = state_value;] ... };

Синтаксис примера в Direct3D 10 и более поздних версий немного изменен для поддержки объектов текстур и массивов выборки.

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

Параметры

Сборники

Только Direct3D 9. Обязательное ключевое слово.

Имя

Строка ASCII, однозначно идентифицирующая имя переменной sampler.

[Индекс]

Только Direct3D 10 и более поздних версий. Необязательный размер массива; положительное целое число больше или равно 1.

SamplerType

[in] Тип sampler, который является одним из следующих: sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState.

Различия между Direct3D 9 и Direct3D 10 и более поздними версиями:

  • Direct3D 10 и более поздних версий поддерживает один дополнительный тип примера: SamplerComparisonState.

Текстура = <texture_variable>;

Только Direct3D 9. Переменная текстуры. Ключевое слово Texture требуется слева; Имя переменной принадлежит справа от выражения в угловых скобках.

state_name = state_value

[in] Необязательные назначения состояний. Левая сторона назначения — это имя состояния, правая сторона — это значение состояния. Все назначения состояния должны отображаться в блоке инструкции (в фигурных скобках). Каждая инструкция отделена точкой с запятой. В следующей таблице перечислены возможные имена состояний.

// sampler state
AddressU
AddressV
AddressW
BorderColor
Filter
MaxAnisotropy
MaxLOD
MinLOD
MipLODBias

// sampler-comparison state
ComparisonFunc

Правая сторона каждого выражения — это значение, присвоенное каждому состоянию. Сведения о возможных значениях состояния для Direct3D 11 см. в D3D11_SAMPLER_DESC структуре. Между именами состояний и членами структуры существует связь от 1 до 1. См. следующий пример.

Remarks

При реализации эффекта состояние sampler является одним из нескольких типов состояний, которые может потребоваться настроить в конвейере для отрисовки. Список всех возможных состояний, которые можно задать в эффекте, см. в следующих статье:

Пример

Различия между Direct3D 9 и Direct3D 10:
Ниже приведен частичный пример примера Direct3D 9 из примера BasicHLSL.
sampler MeshTextureSampler = 
sampler_state
{
    Texture = <g_MeshTexture>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

Ниже приведен частичный пример примера Direct3D 10 из примера BasicHLSL10.

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

Ниже приведен частичный пример объявления состояния сравнения sampler и вызова примера сравнения в 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);

См. также

Типы данных (DirectX HLSL)