OpenGL Mipmapping(Android NDK)

http://en.wikipedia.org/wiki/Mipmap
這個是我這次在做安卓時遇到的問題
因爲GPU的限制,紋理創建時的寬或高需爲2的次方
就是1,2,4,8,16,32,64,128.......
圖的寬高爲31*52,直接作爲紋理的寬高
在某些GPU是可以支援非2次方的寬高, 所以沒有問題
但還是有很多GPU是不支援的
若是GPU不支援非2次方寬高,則glTexImage2D會產生GL_INVALID_VALUE(1281)的錯誤
所以就直接將所有的紋理創建爲2次方的寬高
就解決了問題
實際實踐手法是這樣
1.讀圖
2.讀取圖的寬高
3.找出適合的紋理寬高(如5*9=>8*16, 31*55=>32*64)
4.用紋理寬高創建緩存
最後再用glTexImage2D創建紋理
這樣就在絕大部分Android機子上能運行了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章