android的多分辨率支持機制 由anyDensity設置致使OpenGL貼圖

前段時間給員工作培訓,作了很多OpenGL下面的Demo,不過onSurfaceChanged 獲取的width 和height和屏幕尺寸適中不符合html

終於找到了 <supports-screens android:anyDensity="true"/>  設置,獲取的尺寸和屏幕相符了android

可是,貼圖卻不能顯示了,所有變白windows

實機截圖ide

模擬器運行效果ui

調查思考了一下緣由,我以爲應該是樣:spa

Android平臺中,當程序在manifest中設置android:anyDensity="true"後,系統會對建立的bitmap進行縮放,縮放的根據就是Density調試

而在設備上,opengl的貼圖大小必須是2的N次方,模擬器由於是軟件模擬,對貼圖尺寸沒有嚴格要求。個人圖片原本是512*512的,可是被自動縮放後,尺寸就不標準了,因此形成貼圖沒有成功code

經過調試確認了這一想法htm

    bitmap = BitmapFactory.decodeResource(mContext.getResources(), id + i);
    int w = bitmap.getWidth();
    int h = bitmap.getHeight();
圖片

不設置 android:anyDensity="true", w h 爲512, 設置後 變爲了768

而後,我將全部的圖片資源,都放到了drawable-hdpi目錄下,再運行程序,此次尺寸沒有改變,貼圖正常了。


基於這個問題,這裏深刻探討一下android的多分辨率支持機制。

android SDK文檔中  android-sdk-windows/docs/guide/practices/screens_support.html,說的其實比較清楚,不過因爲是英文的,你們估計通讀理解的人並很少,網上說到多分辨率支持,也就是

相關文章
相關標籤/搜索