8.8 寻址模式

纹理必须与常量插值或线性插值一起使用以形成一个向量值函数T(u,v) = (r,g,b,a)。也就是,当给定一个纹理坐标(u,v)∈[0,1]2时,纹理函数T返回颜色(r,g,b,a)。Direct3D允许我们以4种不同的方式扩展该函数的值域(称为寻址模式):重复(wrap)、边框颜色(border color)、截取(clamp)和镜像(mirror)。

1.重复:通过在每个整点连接处重复图像来扩展纹理(参见图8.10)。

图8.10
图8.10:重复寻址模式。

2.边框颜色:通过将每个不在[0,1]2区间内的(u,v)映射为程序员指定的某个颜色来扩展纹理(参见图8.11)。

图8.11
图8.11 边框颜色寻址模式。

3.截取:通过将每个不在[0,1]2区间内的(u,v)映射为颜色T(u0,v0)来扩展纹理。其中,(u0,v0)∈[0,1]2,(u0,v0)是与(u,v)距离最近的点(参见图8.12)。

图8.12
图8.12 截取寻址模式。

4.镜像:通过在每个整点连接处镜像图像来扩展纹理(参见图8.13)。

图8.13
图8.13 镜像寻址模式。

由于寻址模式始终驻留在Direct3D设备中(重复模式为默认值),所以当纹理坐标超出[0,1]区间时,我们仍然可以得到采样颜色。

重复寻址模式可能是最常用的寻址模式;因为它可以把纹理平铺在物体表面上,使我们在不提供额外数据的情况下有效地提高纹理分辨率(虽然些额外的分辨率是重复的)。当使用平铺时,我们通常希望纹理是无缝的(seamless)。例如,板条箱纹理不是无缝的,因为你可以清楚地看到它的每个副本(参见图8.10)。图8.14展示了将一幅无缝的墙砖纹理在平铺 2×3次后的结果。

图8.14
图8.14 将一幅墙砖纹理平铺2×3次。由于该纹理是无缝的,所以很难一下就看出它的重复图案。

我们在采样器对象中指定寻址模式。下面是图8.10到8.13对应的寻址模式参数:

SamplerState samTriLinear
{
    Filter = MIN_MAG_MIP_LINEAR; 
    AddressU = WRAP; 
    AddressV = WRAP; 
}; 

SamplerState samTriLinear
{ 
    Filter = MIN_MAG_MIP_LINEAR; 
    AddressU = BORDER; 
    AddressV = BORDER; 
    // Blue border color 
    BorderColor = float4(0.0f, 0.0f, 1.0f, 1.0f); 
}; 

SamplerState samTriLinear
{ 
    Filter = MIN_MAG_MIP_LINEAR; 
    AddressU = CLAMP; 
    AddressV = CLAMP; 
}; 

SamplerState samTriLinear
{ 
    Filter = MIN_MAG_MIP_LINEAR; 
    AddressU = MIRROR; 
    AddressV = MIRROR; 
};

注意:可以单独控制uv方向上的寻址模式。读者可以亲自试验一下。

文件下载(已下载 1154 次)

发布时间:2014/8/9 下午3:38:58  阅读次数:4161

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号