Я сейчас работаю с DX9 / SM3, и в документации MSDN по сэмплерам HLSL , похоже, крайне не хватает объяснения, как использовать различные типы сэмплеров. Что еще хуже, они пытаются охватить DX9 и DX10 в одной статье, поэтому они смешивают все ключевые слова:
сэмплер Имя = SamplerType {Texture = <<em> texture_variable >; [ имя_состояния = значение_состояния ;] ...};
...
SamplerType
[in] Тип сэмплера, который является одним из следующих: сэмплер , sampler1D , sampler2D , sampler3D , samplerCUBE , sampler_state , SamplerState .
Различия между Direct3D 9 и Direct3D 10:
Direct3D 10 поддерживает один дополнительный тип сэмплера: SamplerComparisonState .
У меня такое ощущение, что вопреки этой записи, SamplerState
- это только DX10. Практически весь код, который я вижу, использует sampler_state
для SamplerType . Быстрый пример из BasicHLSL (DX9):
sampler MeshTextureSampler =
sampler_state
{
Texture = <g_MeshTexture>;
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};
Почему существуют все различные _SamplerType_s и когда вы будете использовать, скажем, sampler
или sampler2D
вместо sampler_state
? Вы должны быть явными при получении, так или иначе, например, tex2D
, texCUBE
, так что здесь происходит?