Поделиться через


Тип выборки

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

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

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

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

Параметры

Сборники

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

Имя

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

[Индекс]

Только 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. См. следующий пример.

Комментарии

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

Пример

Различия между 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;
};

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