我目前正在使用 DX9/SM3,关于HLSL 采样器的 MSDN 文档似乎非常缺乏解释如何使用不同的采样器类型。更糟糕的是,他们试图在一篇文章中涵盖 DX9 和 DX10,所以他们将所有关键词混在一起:
采样器名称= SamplerType { Texture = < texture_variable >; [ state_name = state_value ;] ... };
...
采样器类型
[在] 采样器类型,它是以下之一:sampler、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
,那么这里发生了什么?