我在我的基於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