OpenGL-ES大多是透明纹理绘制的白色

时间:2013-07-22 09:42:33

标签: opengl-es

我正在为我的游戏使用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);

1 个答案:

答案 0 :(得分:0)

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

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