2013-07-28 89 views
0

我想在Android上的OpenGL ES 1.x中創建一個模擬儀表。我用綠色的中點定理創建了一個簡單的圓。現在我想在圓周上放置一些數字作爲抄表。由於OpenGL沒有原生文本渲染API,因此我試圖加載一個像這樣的enter image description here這樣的PNG圖像,並且其上的圖像是透明的。Android在現有背景上混合透明PNG圖像

現在我必須傳遞給glBlendFunc()函數來實現這個參數。 我嘗試了許多不同的組合,但沒有任何作品。

回答

0

這是Android上的一個常見問題。您不能使用Android位圖類加載其中具有透明區域的紋理。這是因爲Bitmap遵循Porter-Duff規範進行alpha混合,Bitmap通過以預乘格式(A,R * A,G * A,B * A)存儲它們來優化每像素alpha的圖像。對於Porter-Duff而言,這是非常好的,但對於需要非預乘(ARGB)格式的OpenGL來說則不然。這意味着Bitmap類只能用於完全不透明的紋理(或者沒有每個像素的alpha)。本文將詳細介紹:

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1

0

剛剛嘗試通過它們是阿爾法混合值:

glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 

我希望它能幫助。

我不認爲(即使在2.2)Alpha PNGs是Android位圖加載算法的問題。