我正在尝试在Android上的OpenGL ES 1.x中创建一个模拟仪表。我使用绿色的中点定理创建了一个简单的圆。现在我想在圆圈周围放置一些数字用于仪表读数。由于OpenGL没有本机文本呈现API,因此我尝试加载一个像此这样的PNG图像,其中包含读数,其余图像是透明的。
现在我必须将哪些参数传递给glBlendFunc()函数才能实现此目的。 我尝试了很多不同的组合,但没有任何效果。
答案 0 :(得分:0)
这是Android上的常见问题。您无法使用Android Bitmap类加载其中包含透明区域的纹理。这是因为Bitmap遵循用于Alpha混合的Porter-Duff规范,并且Bitmap通过以预乘格式(A,R * A,G * A,B * A)存储它们来优化每像素alpha的图像。这对于Porter-Duff非常有用,但对于需要非预乘(ARGB)格式的OpenGL则不行。这意味着Bitmap类只能用于完全不透明(或没有每像素alpha)的纹理。本文详细介绍:
答案 1 :(得分:0)
尝试传递Alpha Blending值:
glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
我希望它有所帮助。
我不认为(即使在2.2)Alpha PNG是Android Bitmap加载算法的问题。