我想在Android上的OpenGL ES 1.x中创建一个模拟仪表。我用绿色的中点定理创建了一个简单的圆。现在我想在圆周上放置一些数字作为抄表。由于OpenGL没有原生文本渲染API,因此我试图加载一个像这样的这样的PNG图像,并且其上的图像是透明的。Android在现有背景上混合透明PNG图像
现在我必须传递给glBlendFunc()函数来实现这个参数。 我尝试了许多不同的组合,但没有任何作品。
我想在Android上的OpenGL ES 1.x中创建一个模拟仪表。我用绿色的中点定理创建了一个简单的圆。现在我想在圆周上放置一些数字作为抄表。由于OpenGL没有原生文本渲染API,因此我试图加载一个像这样的这样的PNG图像,并且其上的图像是透明的。Android在现有背景上混合透明PNG图像
现在我必须传递给glBlendFunc()函数来实现这个参数。 我尝试了许多不同的组合,但没有任何作品。
这是Android上的一个常见问题。您不能使用Android位图类加载其中具有透明区域的纹理。这是因为Bitmap遵循Porter-Duff规范进行alpha混合,Bitmap通过以预乘格式(A,R * A,G * A,B * A)存储它们来优化每像素alpha的图像。对于Porter-Duff而言,这是非常好的,但对于需要非预乘(ARGB)格式的OpenGL来说则不然。这意味着Bitmap类只能用于完全不透明的纹理(或者没有每个像素的alpha)。本文将详细介绍:
刚刚尝试通过它们是阿尔法混合值:
glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
我希望它能帮助。
我不认为(即使在2.2)Alpha PNGs是Android位图加载算法的问题。