Android Blend透明png图像在现有背景上

时间:2013-07-28 18:52:53

标签: android opengl-es

我正在尝试在Android上的OpenGL ES 1.x中创建一个模拟仪表。我使用绿色的中点定理创建了一个简单的圆。现在我想在圆圈周围放置一些数字用于仪表读数。由于OpenGL没有本机文本呈现API,因此我尝试加载一个像此enter image description here这样的PNG图像,其中包含读数,其余图像是透明的。

现在我必须将哪些参数传递给glBlendFunc()函数才能实现此目的。 我尝试了很多不同的组合,但没有任何效果。

2 个答案:

答案 0 :(得分:0)

这是Android上的常见问题。您无法使用Android Bitmap类加载其中包含透明区域的纹理。这是因为Bitmap遵循用于Alpha混合的Porter-Duff规范,并且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

答案 1 :(得分:0)

尝试传递Alpha Blending值:

glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

我希望它有所帮助。

我不认为(即使在2.2)Alpha PNG是Android Bitmap加载算法的问题。