我知道mipmaps和積分圖像都存在這樣的問題,即得到的像素值不是原始紋理空間中任意多邊形的積分。使用積分圖像在紋理座標上對軸對齊矩形進行積分需要4次紋理查找。使用mipmap,opengl在mipmap中插入4個相鄰的像素值,以及4個內存查找。使用一個完整的圖像,你需要更少的內存(沒有額外的preresized圖像,只有一個完整的圖像,而不是原來的),沒有水平的決心。當然,這可以通過着色器來實現,但爲什麼(現在被棄用的)固定功能管線曾經設計過支持mipmap並且沒有整體圖像支持?爲什麼OpenGL提供對mipmap的支持而不是整體圖像?
2
A
回答
2
使用需要更少的內存積分圖像
我很懷疑這種說法是真實的
從我瞭解的積分圖像的值可以得到相當大的,因此需要浮點數表示將使用比典型的24位mipmap更多的空間(mipmap只能將圖像大小加倍)和/或不夠精確並在插值過程中產生噪聲。另外浮點圖像並沒有真正用於固定功能流水線,並且GPU對浮點圖像的處理速度可能會慢很多。
如果您使用整數圖片,那麼積分圖像所需的比特深度會不合理地變高(bitdepth =範圍+ 8對於白色圖像,這意味着256x256圖像需要每比特深度爲264比特顏色通道)與更高分辨率的圖像。
1
但爲什麼(現在不推薦使用)固定功能管道設計爲支持mipmap並且沒有整體圖像支持?
因爲mipmap的訪問和插值可以建立爲相當簡單的硬連線電路。有沒有想過,爲什麼紋理尺寸必須是2的冪?通過一系列位移和添加來實現Mipmaping計算。訪問高斯金字塔中的相鄰元素也需要比評估積分更少的內存訪問。並且存在您的主要問題:填充(即視頻內存帶寬)始終是GPU的瓶頸。
相關問題
- 1. 爲什麼Silverlight不提供IME支持?
- 2. Play爲什麼只提供對OAuth 1.0的支持?
- 3. 爲什麼CSS Transitions -module不支持圖像到圖像轉換?
- 4. 爲什麼要在補丁上提取SIFT特徵而不是整個圖像?
- 5. 爲什麼Android支持java而不支持其他語言?
- 6. 最低支持分辨率應該爲網站提供什麼?
- 7. 爲什麼Java提供規範而不是實現
- 8. 爲什麼FileStream提供FtpWebRequest而不是MemoryStream?
- 9. 爲什麼angular $ http提供了headerGetter而不是頭文件?
- 10. 爲什麼redirect_to _path提供HTTP而不是HTTPS url?
- 11. 爲每個瀏覽器提供完整的CSS3支持
- 12. OpenGL mipmap問題
- 13. 7.1.2上的Nexus 6P提供「設備支持,但APK只支持$ abiFlavorsHere」;做什麼?
- 14. 爲什麼DIV和圖像不是調整大小,而是被切割?
- 15. 爲什麼EF不支持合併到對象圖功能?
- 16. Pyqt5爲什麼我的圖像加載爲PNG而不是JPG?
- 17. os.environ的類型是什麼?爲什麼它不支持視圖鍵方法
- 18. SceneKit支持的OpenGL ES 3.0的子集是什麼?
- 19. 什麼庫提供跨平臺的3D和P2P支持?
- 20. 爲什麼signtool.exe不支持/爲而雙標誌SHA2和SHA1
- 21. 將文檔轉換爲不支持字體的圖像
- 22. 爲什麼Junit測試僅支持不完整的覆蓋叉?
- 23. Silverlight支持的最大分辨率圖像文件是什麼?
- 24. 爲什麼不WsHttpBinding的支持流?
- 25. 爲什麼我的Mac只支持OpenGL 2.1?
- 26. OpenGL Cubemap:寫入mipmap
- 27. 提供支持取消的方法/類/組件的最佳做法是什麼?
- 28. 爲什麼Django不能提供我的媒體文件?
- 29. 爲什麼UnhandledExceptionEventArgs.ExceptionObject對象而不是Exception?
- 30. 什麼ASP.NET MVC 3 CMS提供多語言支持?
*咳嗽* Mipmap添加三分之一。他們不加倍。你必須存儲1 + 1/4 + 1/16 + ...。使用該算術級數公式或應用您的二進制算術本能(想想:設置每一個,但低於2的冪)。 – Tommy 2014-07-16 07:03:58