0

我正在尝试在 Android 上的 OpenGL ES 1.x 中创建一个模拟仪表。我使用绿色中点定理创建了一个简单的圆圈。现在我想在圆圈周围放置一些数字用于仪表读数。由于 OpenGL 没有本机文本渲染 API,我试图加载这样的 PNG 图像在此处输入图像描述,上面有读数,图像的其余部分是透明的。

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

4

2 回答 2

0

这是Android上的常见问题。您不能使用 Android Bitmap 类来加载其中具有透明区域的纹理。这是因为 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

于 2013-07-29T19:10:00.537 回答
0

只需尝试传递 Alpha Blending 值,它们是:

glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

我希望它有所帮助。

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

于 2013-07-31T15:54:14.187 回答