0

我正在为我的游戏使用 OpenGL-ES 1.1。除了绘制 99% 透明的纹理之外,Alpha 混合对我来说非常有效。例如,如果我有一个 512x512 的图像,中间只有一条 2px 的黑线。这样的纹理在 android 上绝对是白色的。

我的混合功能:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

任何帮助将不胜感激。

编辑:这就是我设置纹理的方式

glEnable(GL_TEXTURE_2D);
glGenTextures(1, &textureCreated);
glBindTexture(GL_TEXTURE_2D, textureCreated);
maOpenGLTexImage2D(image);

// Set texture parameters.
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
4

1 回答 1

0

您不能将 Android Bitmap 类用于 OpenGL ES 纹理,除非它们完全不透明。这是因为 Bitmap 类以预乘格式存储像素以进行 Porter-Duff 混合,这与 OpenGL ES 混合不兼容。这篇文章提供了更多细节:

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1/

于 2013-07-23T14:51:43.580 回答