打开GL ES纹理:设置透明色||颜色的alpha为零

时间:2012-04-10 15:48:54

标签: opengl-es transparency textures alpha

我有一个纹理,我想将单个颜色的alpha(例如(255,255,255))设置为0.

我现在使用此调用(self.texture是来自cocos2d的CCTexture2D)

glBindTexture(GL_TEXTURE_2D, self.texture.name);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, baseAddress);

纹理完美显示。我希望你能帮助我。

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解这一点并且我对opengl相当新,但我认为你只想让一种颜色变得透明,你不能用两种纹理来制作一个透明的

gl.glblendfunc()

boolean SEE_THRU = true;
if (SEE_THRU) {
gl.glDisable(GL10.GL_DEPTH_TEST);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE);
}

答案 1 :(得分:0)

使用OpenGL命令无法做到这一点。您必须使用着色器过滤某种颜色的像素,或者在将其上传到glTexImage2D之前,逐像素循环修改baseAddress处的像素数据。