開發環境與內容:
使用eclipse,SDK用Android 4.0.3 Platform API Level: 15
測試了一下Android 4.0的GPU繪製功能
簡單開發出一顆球固定在畫面800*480的舞台
可以藉由重力感測器來移動球體
測試1
如果開發時,使用GPU繪製的API,來產生物件,並編譯成apk檔
在one X執行,且ONE X系統設定是不強制執行GPU
程式執行是正常的
但如果使用ONE X系統設定強制執行GPU
那麼該程式仍是正常
測試2
如果開發時,不使用GPU繪製的API,來產生物件,並編譯成apk檔
在one X執行,且ONE X系統設定是不強制執行GPU
程式執行是正常的
但如果使用ONE X系統設定強制執行GPU
那麼該程式開始產生頻閃、破圖問題
目前ONE X版上發生破圖問題的
普遍都是在瀏覽器、拍照程式啟動
所以小弟也合理懷疑
"瀏覽器"跟"拍照"這兩隻程式在上ANDROID 4.0時
並沒有把程式寫好
由於打給HTC客服,有一點在雞同鴨講
所以直接寫信過去了
希望官方能看得懂小弟很拙劣的表達方式
開發API參考以下資訊
從Android3.0開始,Android 2D的繪製流程就設計為能夠更好地支援GPU加速
使用GOOGLE官方的GPU的方法在編寫程式時,在進行畫面不斷讀格的操作時都會使用硬體加速
啟用硬體加速的最簡單方法就是為整個設定打開GPU強制繪圖
如果你的程式開發環境是標準View或者是Drawable
GPU強制繪圖加速的設定這並不會造成任何的影響
然而GPU強制繪圖並不支持所有2D畫面的操作,所以開啟GPU強制繪圖
可能會對使用自定義API的軟體造成影響,問題常常會發生在區塊素異常和錯誤的像素渲染
為了解決這個問題Android可以讓你選擇啟動或者禁用以下級別的GPU強制繪圖:
Application Activity Window 和View 。
1. Application級別寫法
在你的Android Manifest文件中添加<application> 屬性標記,以便為整個程式使用硬體加速。
<applicationandroid:hardwareAccelerated="true" …>
2. Activity級別寫法
如果你的軟體不能在Application級別表現較快的速度
則可以使用對Activity進行單獨控制。要啟動或者禁用一個Activity的硬體加速
你可以使用activity的android:hardwareAccelerated屬性
下面的一個列子使整個Application啟用硬體加速,但是對一個Activity禁止使用硬體加速
<application android:hardwareAccelerated="true">
<activity …/> <activity android:hardwareAccelerated="false" />
</application>
3. Window級別寫法
如果你需要更細膩度的控制,可以通過如下code給window進行加速。
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
注意:這個階段你不能在Window級別對它禁用硬體加速。
4. View級別寫法
我們可以對單獨的View在執行時階段禁用硬體加速。我們可以使用如下CODE:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
注意:這個階段也不能夠在View級別進行硬體加速。
1.2 判斷一個View是否已經啟用了硬體加速
有時候我們需要知道一個程式是否已經啟用了硬體加速,特別是針對一些自定義插件
因為你的軟體做了很多自定義“畫圖”的操作,但並不是所有的過程都支持新的“畫圖”的渲染過程。
有兩種不同的方法來檢查Application是否啟用了硬體加速:
1. 使用View.isHardwareAccelerated()
如果返回true則可以說明這個View所在的窗口已經啟用了硬體加速。
2. Canvas.isHardwareAccelerated()
如果返回true則說明這個Canvas已經啟用了硬體加速。
如果你必須要在你的繪畫代碼中進行是否已經加速的檢查
如果可能的話請使用Canvas.isHardwareAccelerated()來代替View.isHardwareAccelerated()
當一個View是存在於一個已經加速的Window上時,
可以使用沒有硬體加速的Canvas進行繪畫,比如:當我們把一個View畫到Bitmap上然後用作緩存。
-----4/5 20:23更新-----
GPU強制使用,還真的是壞的...sorry
world5168 wrote:
大大真厲害..還會寫程式!!
軟體的問題應日後都會更新..
看你的意思..
好像軟體支援GPU繪製功能還沒正常啟用....
表示HTC ONE X並沒有完全發揮效能??
全部介面做GPU加速應該會更棒...
請問..安卓4..沒有類似DIRECT-X-11 繪圖的介面嗎??
ARM的架構真的有支援DirectX 11喔
去年年底的資訊,ARM新的圖形核心新產品Mali-T658
它是Cortex-A15和Cortex-A7方案共同打造的產物
支援OpenGL ES, OpenCL,OpenVG和DirectX 11
T658用了更多的著色核心和運算通道
據稱性能是Galaxy S II中Mali-400 CPU的10倍
Mali-T658最多支援八核心
這個架構目前聯發科有買授權
未來聯發科會有該整合晶片上市
也就可能會發展在對岸的貼牌(山寨)手機中
world5168 wrote:
DirectX 11
其實DirectX由微軟公司開發的用途廣泛的API
但DirectX並非只是Windows用戶才能用
雖然Windows是現階段主流的系統,用戶也最多
遊戲開發商仍然希望自己的產品能夠用於多個操作系統下
但是DirectX畢竟是微軟所制訂
並不能直接使用於Linux以及MAC OS系統下
因此使用這部分操作系統的消費者
是不是就與使用DirectX API開發的遊戲了呢?
答案當然是否定的
得益於開放碼的支援,Linux以及MAC OS系統也可以安裝DirectX
實現其它平台上對DirectX遊戲的支援
安桌也同樣能跑,甚至一些大型3D遊戲
可能也悄悄把DX的API包進自己的軟體中了
而ANDROID的SDK中
也有GOOGLE針對GPU繪圖的API
只是不像DX有著強大的3D功能




























































































