MipMap
一、紋理過濾OpenGL中的鄰近過濾和線性過濾: GL_NEAREST(也叫鄰近過濾,Nearest Neighbor Filtering)是OpenGL默認的紋理過濾方
一、紋理過濾
OpenGL中的鄰近過濾和線性過濾:
GL_NEAREST(也叫鄰近過濾,Nearest Neighbor Filtering)是OpenGL默認的紋理過濾方式。當設置為GL_NEAREST的時候,OpenGL會選擇中心點最接近紋理坐標的那個像素。下圖中你可以看到四個像素,加號代表紋理坐標。左上角那個紋理像素的中心距離紋理坐標最近,所以它會被選擇為樣本顏色:

GL_LINEAR(也叫線性過濾,(Bi)linear Filtering)它會基于紋理坐標附近的紋理像素,計算出一個插值,近似出這些紋理像素之間的顏色。一個紋理像素的中心距離紋理坐標越近,那么這個紋理像素的顏色對最終的樣本顏色的貢獻越大。下圖中你可以看到返回的顏色是鄰近像素的混合色:

二、Mipmap
OpenGL叫做多級漸遠紋理(Mipmap),由一組分辨率逐漸降低的紋理序列組成,每一級紋理寬度和高度都是上一級紋理寬度和高度的一半。寬和高不一定相等,也就是說,這些紋理不一定都是正方形。它簡單來說就是一系列的紋理圖像,后一個紋理圖像是前一個的二分之一。多級漸遠紋理背后的理念很簡單:距觀察者的距離超過一定的閾值,OpenGL會使用不同的多級漸遠紋理,即最適合物體的距離的那個。由于距離遠,解析度不高也不會被用戶注意到。同時,多級漸遠紋理另一加分之處是它的性能非常好。在D3D和OGL都有相對應的API控制接口。


優點:
1.質量高:避免了在遠距離情況下的采樣頻率低和數據頻率高造成的失真和摩爾紋,效果比無Mipmap好 得多。2.性能好:避免了不使用Mipmap下距離遠時采樣頻率低和數據頻率高而照成texture cache命中率不高(相鄰Pixel采樣Texel時uv相差比較大)使性能下降。
缺點:占用顯存,可使用ue的紋理流緩存優化(IO換顯存)。
使用Mipmap:
Mipmap創建:預先創建原紋理大小2分之一的多級漸遠紋理,在多級漸遠紋理取色采樣時,也會進行線性過濾,可以理解成預先創建每隔一定閾值(也就是每次映射像素為上一級別多級漸遠紋理的2分之一的時候)并經過了線性過濾的紋理。
使用Mipmap的渲染過程:20*20的像素需要映射400*400的紋理像素時,檢測到一顆像素需要映射到紋理像素為20*20,在Mipmap紋理中里尋找最接近20*20紋理像素的多級漸遠紋理,并使用此多級漸遠紋理進行采樣。
理論上點對點的映射最為精確,而如果最鄰近的子紋理跟20*20無法點對點采樣映射,還可以設置多級漸遠紋理的過濾方式
過濾方式t描述:
| GL_NEAREST_MIPMAP_NEAREST | 使用最鄰近的多級漸遠紋理來匹配像素大小,并使用鄰近插值進行紋理采樣 |
|---|---|
| GL_LINEAR_MIPMAP_NEAREST | 使用最鄰近的多級漸遠紋理級別,并使用線性插值進行采樣 |
| GL_NEAREST_MIPMAP_LINEAR | 在兩個最匹配像素大小的多級漸遠紋理之間進行線性插值,使用鄰近插值進行采樣 |
| GL_LINEAR_MIPMAP_LINEAR | 在兩個鄰近的多級漸遠紋理之間使用線性插值,并使用線性插值進行采樣 |
學習參考鏈接:
https://blog.csdn.net/qq_42428486/article/details/118856697
https://blog.csdn.net/wzxxdghdf/article/details/92810867
上一篇:小型3kw柴油發電機
下一篇:Mini LED救了彩電市場








