您的位置:首页 > 其它

D3D11_TEXTURE_ADDRESS_MODE(纹理寻址模式)

2014-10-22 11:49 405 查看
最近在学习D3D11,看到如下:



SamplerState samColor

{

Filter = MIN_MAG_MIP_LINEAR;

AddressU = Clamp;

AddressV = Clamp;

};

不太理解,查阅了相关的D3D11SDK 以及一些其他资料,总结如下:

在D3D11中,纹理坐标系统是由水平的u 轴和竖直的v轴构成的,由u、v坐标系确定纹理的每个像素;u、v的取值范围为[0,1]。实际上纹理坐标可以超出这个值,它通过Direct3D的寻址模式定义的。通常的寻址模式有5种,其定义的数据结构如下所示:

Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.

typedef enum D3D11_TEXTURE_ADDRESS_MODE
{
D3D11_TEXTURE_ADDRESS_WRAP = 1,
D3D11_TEXTURE_ADDRESS_MIRROR = 2,
D3D11_TEXTURE_ADDRESS_CLAMP = 3,
D3D11_TEXTURE_ADDRESS_BORDER = 4,
D3D11_TEXTURE_ADDRESS_MIRROR_ONCE = 5,
} D3D11_TEXTURE_ADDRESS_MODE;

每个模式的作用如下:

WRAP:在超出[0,1]范围的坐标上不断重复原来的问题;

MIRROR:在超出[0,1]范围的坐标上原来纹理的镜像来代替;

CLAMP:在超出[0,1]范围的坐标上,用距离[0,1]范围内最近的一组纹理坐标(u,v)来代替;

BORDER:在超出[0,1]范围的坐标上,用一种边界颜色来代替,边界颜色需要在TextureAddress.Border中设置;

MIRROR_ONCE:在超出[0,1]范围的坐标上,其作用MIRROR和CLAMP的结合效果相似。取纹理坐标的绝对值,因此,是围绕原点进行镜像的,然后再截取其最大值;




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: