Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android混合现有背景上的透明png图像_Android_Opengl Es - Fatal编程技术网

Android混合现有背景上的透明png图像

Android混合现有背景上的透明png图像,android,opengl-es,Android,Opengl Es,我正在尝试在Android上用OpenGLES1.x创建一个模拟仪表。我用绿色的中点定理创建了一个简单的圆。现在我想在圆圈周围放置一些数字,用于仪表读数。因为OpenGL没有原生的文本渲染API,所以我尝试加载一个像这样的PNG图像,并在其上读取,图像的其余部分是透明的 现在,我必须将哪些参数传递给glBlendFunc()函数才能实现这一点。 我尝试了许多不同的组合,但都没有效果。这是Android上的常见问题。您不能使用Android位图类加载具有透明区域的纹理。这是因为位图遵循Porter

我正在尝试在Android上用OpenGLES1.x创建一个模拟仪表。我用绿色的中点定理创建了一个简单的圆。现在我想在圆圈周围放置一些数字,用于仪表读数。因为OpenGL没有原生的文本渲染API,所以我尝试加载一个像这样的PNG图像,并在其上读取,图像的其余部分是透明的

现在,我必须将哪些参数传递给glBlendFunc()函数才能实现这一点。
我尝试了许多不同的组合,但都没有效果。

这是Android上的常见问题。您不能使用Android位图类加载具有透明区域的纹理。这是因为位图遵循Porter-Duff alpha混合规范,位图通过以预乘格式(A、R*A、G*A、B*A)存储每像素alpha来优化图像。这对于Porter Duff来说非常好,但对于OpenGL来说却不是这样,因为OpenGL需要非预乘(ARGB)格式。这意味着位图类只能用于完全不透明(或没有每像素alpha)的纹理。本文详细介绍:


只需尝试传递Alpha混合值,该值为:

glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
我希望有帮助

我不认为(即使是2.2)Alpha PNG对于Android位图加载算法来说是个问题