一个纹理采样器包含采样状态,采样状态指定了纹理将如何被采样,并控制采样过程中的纹理过滤.在纹理采样时需要做三件事情:(1)获取纹理(2)声明一个采样器(3)定义采样器.
这里写一个简单实例:
texture Tex2D; sampler2D Sampler2D = sampler_state{
Texture = < Tex2D >;
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};
从中,我们可以看出,这个实例中首先声明了一个纹理和一个采样器,并通过让采样器包含一个采样状态来定义采样器的基本控制,这里指明采样器是采样Tex2D纹理,并使用线形过滤方式,具体的状态定义可以参看SDK中有关纹理过滤与寻址的内容(_D3DSMPLESTATETYPE).
如果你使用确省方式定义如下:
sampler2D Sampler2D;
那么采样器状态默认为线形过滤(LINEAR)和重叠纹理寻址(WRAP).
如果你希望读取一个纹理特定位置的象素,可以使用,tex1D,tex2D,texCUBE等,以下以tex2D为例:
float4 sample_2D(float2 tex : TEXCOORD0) : COLOR
{
return tex2D(s_2D, tex);
}
tex2D接受一个采样器和2D纹理地址作为参数,定位出纹理上的特定象素,具体可以参看SDK中纹理映射的相关部分.
如果在纹理查找函数后附加"bias"或"proj"后缀(如tex2Dbias).如果