一个纹理采样器包含采样状态,采样状态指定了纹理将如何被采样,并控制采样过程中的纹理过滤.在纹理采样时需要做三件事情:(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
{

纹理采样涉及采样状态、纹理过滤和采样器的使用。示例中声明了纹理和采样器,使用线性过滤方式采样Tex2D纹理。采样函数如tex2D用于获取纹理特定像素,可以通过添加"bias"或"proj"后缀进行调整。采样器还可用于数组形式,在循环中处理多个纹理。
最低0.47元/天 解锁文章
908





