2012-03-22 75 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