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