我在我的基于Android的游戏(OpenGl ES2.0)中渲染纹理时出现问题。我没有意识到这个问题,因为在大多数设备上这个问题不存在,一切都很好。
关于下面的屏幕截图,左边的红色条被绘制在主框架缓冲区上,因此它被正确显示。其他所有内容都在屏幕外渲染,然后渲染到主帧缓冲区。 我附加上三星GalaxyŸS5360作出的截图(我不知道如果这个问题出现在其他设备上),以及负责离屏帧缓存/纹理制作代码:关于framebuffer纹理的OpenGL ES2.0毛刺
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture[i]);
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, framebuffer[i]);
GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, texture[i], 0);
if(GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER) != GLES20.GL_FRAMEBUFFER_COMPLETE) {
// ...
问题仍然存在。没有人知道Galaxy Y会出现什么问题? – cplusogl 2012-07-06 08:17:28
我在Galaxy Y的游戏中(和仅在该设备上)具有完全相同的问题。我直接绘制的所有东西都可以工作,一些帧缓冲区对象也会得到同样的小故障,我做了一些测试,故障只发生在特定的大小,但我仍在寻找解决方案。不知何故你解决了这个问题? – fbafelipe 2013-04-15 19:41:08
不幸的是,我没有可以测试问题的设备。如果您能找到解决方案,请在此处发布。祝你好运 – cplusogl 2013-04-15 23:40:23