最近在學習D3D11,看到以下:數據結構
ide
SamplerState samColor
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Clamp;
AddressV = Clamp;
};學習
不太理解,查閱了相關的D3D11SDK 以及一些其餘資料,總結以下:code
在D3D11中,紋理座標系統是由水平的u 軸和豎直的v軸構成的,由u、v座標系肯定紋理的每一個像素;u、v的取值範圍爲[0,1]。實際上紋理座標能夠超出這個值,它經過Direct3D的尋址模式定義的。一般的尋址模式有5種,其定義的數據結構以下所示:class
Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.lamp
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的結合效果類似。取紋理座標的絕對值,所以,是圍繞原點進行鏡像的,而後再截取其最大值;