2012-01-11 66 views
2

我知道mipmaps和積分圖像都存在這樣的問題,即得到的像素值不是原始紋理空間中任意多邊形的積分。使用積分圖像在紋理座標上對軸對齊矩形進行積分需要4次紋理查找。使用mipmap,opengl在mipmap中插入4個相鄰的像素值,以及4個內存查找。使用一個完整的圖像,你需要更少的內存(沒有額外的preresized圖像,只有一個完整的圖像,而不是原來的),沒有水平的決心。當然,這可以通過着色器來實現,但爲什麼(現在被棄用的)固定功能管線曾經設計過支持mipmap並且沒有整體圖像支持?爲什麼OpenGL提供對mipmap的支持而不是整體圖像?

回答

2

使用需要更少的內存積分圖像

我很懷疑這種說法是真實的

從我瞭解的積分圖像的值可以得到相當大的,因此需要浮點數表示將使用比典型的24位mipmap更多的空間(mipmap只能將圖像大小加倍)和/或不夠精確並在插值過程中產生噪聲。另外浮點圖像並沒有真正用於固定功能流水線,並且GPU對浮點圖像的處理速度可能會慢很多。

如果您使用整數圖片,那麼積分圖像所需的比特深度會不合理地變高(bitdepth =範圍+ 8對於白色圖像,這意味着256x256圖像需要每比特深度爲264比特顏色通道)與更高分辨率的圖像。

+1

*咳嗽* Mipmap添加三分之一。他們不加倍。你必須存儲1 + 1/4 + 1/16 + ...。使用該算術級數公式或應用您的二進制算術本能(想想:設置每一個,但低於2的冪)。 – Tommy 2014-07-16 07:03:58

1

但爲什麼(現在不推薦使用)固定功能管道設計爲支持mipmap並且沒有整體圖像支持?

因爲mipmap的訪問和插值可以建立爲相當簡單的硬連線電路。有沒有想過,爲什麼紋理尺寸必須是2的冪?通過一系列位移和添加來實現Mipmaping計算。訪問高斯金字塔中的相鄰元素也需要比評估積分更少的內存訪問。並且存在您的主要問題:填充(即視頻內存帶寬)始終是GPU的瓶頸。

相關問題