D3D11_TEXTURE_ADDRESS_MODE(紋理尋址模式)

最近在學習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的結合效果類似。取紋理座標的絕對值,所以,是圍繞原點進行鏡像的,而後再截取其最大值;
 
 

相關文章
相關標籤/搜索