0

我有一个纹理,我想将单色(例如(255,255,255))的 alpha 设置为 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);

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

4

2 回答 2

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);
}
于 2012-04-13T09:26:39.263 回答
0

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

于 2012-04-10T18:41:43.270 回答