mipmapping用于解決走樣的問題,將紋理映射到多邊形上和對紋理進行采樣(點采樣,雙線性紋理濾波等)時,將出現一些與空間信息采樣理論相關的怪異現象。將兩個相同的重復圖樣(由直線,圓或點陣組成)拼貼起來時,如果它們沒有完全對齊,將形成波紋圖案,波紋圖案不是圖象本身固有的,而是一種錯覺。這種圖案通常出現在對比度較高或頻率較高的區域;將兩幅圖象拼貼起來時,由于淺色區域和深色區域的相互干擾,也會出現這種圖案。
為實現mipping,需要創建由紋理組成的mip鏈,其中每個紋理的大小都為前一個紋理的1/4(沿每條軸縮小一半),最后一個紋理的大小為1x1。
另外,這些mip紋理鏈都是使用濾波器(平均濾波器,箱形濾波器,高斯濾波器等)生成的。渲染多邊形時,根據多邊形離視點距離的遠近或多邊形被投影后的面積,選擇使用合適的mip紋理。這樣,將最大限度地減少閃爍和低頻走樣的問題。

gamma = 1.000000時,mippping的效果

gamma = 1.510000時,mippping的效果,這時相當于調高圖象的亮度。
雙線性紋理濾波指的是在紋理映射期間,從源紋理中采集多個紋素樣本,然后通過平均或使用其他濾波器來計算目標像素的值。
雙線性插值的原理是根據紋理坐標u, v采集紋理圖中相應點周圍的像素,并以線性方式對它們進行平均。

根據離視平面的距離遠近選擇不同紋理映射函數,對于離視平面很近的多邊形,調用完美透視修正紋理映射函數;對于離視平面不遠不近的多邊形,調用線性分段紋理映射函數;對于離視平面較遠的多邊形,調用仿射紋理映射函數。

實體渲染模式

線框模式

防射紋理映射的效果,使用z緩存,可以看的出繪畫出來的多邊形是不規則的,說明這種算法有問題。

完美透視修正紋理映射,使用1/z緩存,繪制出的多邊形是規則的,和紋理圖上的一致。

線性分段透視修正紋理映射,效果幾乎和完美透視修正紋理映射一樣。
利用ALPHA實現水透明的效果,不過在水艇啟動行駛后3D渲染會出現一些貼圖錯誤,不找這BUG了,代碼太多,找起來太費盡。

在物體級支持ALPHA混合,DEMO加載大量透明的球體和一個以黑白相間的棋盤作為紋理的實心球體,這些球體在2D圖像前移動。
點擊查看
這老師有意思,比較經典的語錄:
通常只有像我這種職業級的玩家才可以這么操縱 ^_^
我還有一個閃避技能? ^_^