openGL ES - 绘制空像素

时间:2013-11-15 22:54:19

标签: android opengl-es blending

我处于需要使用FBO渲染到纹理的情况,我需要从缓冲区中删除一些像素。也就是说,在RGBA彩色帧缓冲区​​中绘制(0,0,0,0)颜色。这将允许我稍后在另一个上面渲染此纹理,并且因为我使用混合,所以不会渲染“零像素”。

问题是我无法在屏幕上绘制这样的颜色,因为在我这样做时启用了GL_BLEND并且零像素没有渲染到纹理。 所以我尝试在渲染到纹理之前禁用GL_BLEND,并且1.它继续混合,就像没有发生任何事情一样.2。在某些情况下,它会渲染所有图形而不会混合,尽管它显然接收到glEnable(GL_BLEND)调用。

以下是大部分代码:

gl.glEnableClientState(GL11.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
gl.glDisable(GL11.GL_BLEND);
gl.glBindTexture(GL11.GL_TEXTURE_2D, 0);
gl.glFrontFace(GL11.GL_CW);
gl.glVertexPointer(3, GL11.GL_FLOAT, 0, vertexBuffer);
gl.glTexCoordPointer(2, GL11.GL_FLOAT, 0, textureBuffer);
gl.glPushMatrix();
gl.glTranslatef(start_x+adv_x/2+adv_x*(float)col_idx, start_y+adv_y/2+adv_y*(float)j, -1.0f);
gl.glScalef(adv_x/2, adv_y/2, 1.0f);
gl.glColor4f(0,0,0,0);
gl.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, vertex.length / 3);
gl.glColor4f(1f, 1f, 1f, 1f);
gl.glPopMatrix();
gl.glEnable(GL11.GL_BLEND);
gl.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
gl.glDisableClientState(GL11.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);

这是来自Android应用程序的代码,用Java编写。 可能是什么问题?

0 个答案:

没有答案