Тип выборки
Используйте следующий синтаксис для объявления состояния выборки, а также состояния сравнения выборки.
Различия между Direct3D 9 и Direct3D 10 и более поздних версий: Ниже приведен синтаксис для средства выборки в Direct3D 9.
Синтаксис средства выборки в Direct3D 10 и более поздних версиях немного изменен для поддержки объектов текстур и массивов выборки.
|
Параметры
-
Сборники
-
Только 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 10 использует группы состояний.
- Direct3D 9 использует отдельные состояния.
Пример
Различия между Direct3D 9 и Direct3D 10: Ниже приведен частичный пример примера Direct3D 9 из примера BasicHLSL.
Ниже приведен частичный пример выборки Direct3D 10 из примера BasicHLSL10.
|
Ниже приведен частичный пример объявления состояния сравнения выборки и вызова метода сравнения в 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);