2012-03-22 76 views
1

我在我的基于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) { 
// ... 

Bad rendering

+0

问题仍然存在。没有人知道Galaxy Y会出现什么问题? – cplusogl 2012-07-06 08:17:28

+0

我在Galaxy Y的游戏中(和仅在该设备上)具有完全相同的问题。我直接绘制的所有东西都可以工作,一些帧缓冲区对象也会得到同样的小故障,我做了一些测试,故障只发生在特定的大小,但我仍在寻找解决方案。不知何故你解决了这个问题? – fbafelipe 2013-04-15 19:41:08

+0

不幸的是,我没有可以测试问题的设备。如果您能找到解决方案,请在此处发布。祝你好运 – cplusogl 2013-04-15 23:40:23

回答

0

如果我没有记错的话,三星GalaxyŸS5360只的OpenGL ES-CM 1.1见http://geekprison.com/2163-samsung-galaxy-y-s5360-pricespecification-announced-for-india/

+0

有趣的是,我仍然在Manifest文件中明确指出游戏利用OpenGL ES 2.0(创建OpenGL表面时存在事件代码,因此存在适当的函数调用),因此如果Samsung Galaxy Y不支持2.0版,那么我认为没有人能够从市场上下载它,他们当然这样做了。目前我已经从Google Play中排除S5360,因为上述问题仍在发生。因此我认为情况并非如此。 – cplusogl 2012-04-04 12:13:04