2013-07-28 42 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位图加载算法的问题。