Texture Wrapping Mode

孫群發表於2012-12-01

注:轉自http://blog.sina.com.cn/s/blog_61f4999d0100mhlq.html

在進行紋理帖圖時,圖象會出現在物體表面的(u,v)位置上,而這些值在[0.0,1.0]範圍內。但是,如果超出這個值域,會發生什麼情況呢?這由 紋理的對映函式來決定。在OpenGL中,這類對映函式稱為“Texture Wrapping Mode”;在D3D中,稱為“Texture Addressing Mode”。常見的有下面幾種:

   1. 重複(GL_REPEAT):圖象在表面上重複出現。在演算法上,忽略紋理座標的整數部分,並將紋理圖的拷貝貼上在物體表面上。對於大多數複製紋理的使用, 在紋理頂部的紋理單元應與底部的紋理單元相匹配,在紋理左側的紋理單元也應與右側的紋理單元相匹配。這樣才能做到無縫連線。
   2. 擷取(GL_CLAMP):將大於1.0的數值設定為1.0,將小於0.0的數值設定為0.0,即將超出[0.0,1.0]範圍的數值擷取到[0.0,1.0]範圍內,這樣會導致紋理邊緣的重複。
   3. 映象重複(GL_MIRRORED_REPEAT_ARB):圖象在物體表面上不斷重複,但是每次重複的時候對圖象進行映象或者反轉。這樣在紋理邊緣處比較連貫。在OpenGL中通過ARB_texture_mirrored_repeat擴充套件來實現。
    4. 邊界擷取(CLAMP_TO_BORDER_ARB):在[0.0,1.0]範圍外的引數值用單獨定義的邊界顏色或紋理邊緣進行繪製。適合於繪製物體表面 的貼花紙。在OpenGL中通過ARB_texture_border_clamp擴充套件來實現,CLAMP_TO_BORDER_ARB在所有 mipmap層次上對紋理座標進行擷取,使nearest和linear過濾只返回邊界紋理單元的顏色。
   5. 邊緣擷取(GL_CLAMP_TO_EDGE):總是忽略邊界。處於紋理邊緣或者靠近紋理邊緣的紋理單元都用作紋理計算,但是不包括邊界上的紋理單元。

相關文章