我開發了一款由很多人玩的Android遊戲。 100-200中的一個用戶面臨一個我無法理解的異常。AndEngine RenderTexture例外:GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
我使用RenderTexture當我嘗試初始化它會拋出以下異常:
Fatal Exception: org.andengine.opengl.exception.RenderTextureInitializationException
org.andengine.opengl.exception.GLFrameBufferException: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
它適用於所有設備的99%。該初始化方法是這樣的:
public void init(final GLState pGLState) throws GLFrameBufferException, GLException {
this.savePreviousFramebufferObjectID(pGLState);
try {
this.loadToHardware(pGLState);
} catch (final IOException e) {
/* Can not happen. */
}
/* The texture to render to must not be bound. */
pGLState.bindTexture(0);
/* Generate FBO. */
this.mFramebufferObjectID = pGLState.generateFramebuffer();
pGLState.bindFramebuffer(this.mFramebufferObjectID);
/* Attach texture to FBO. */
GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, this.mHardwareTextureID, 0);
try {
pGLState.checkFramebufferStatus();
} catch (final GLException e) {
this.destroy(pGLState);
throw new RenderTextureInitializationException(e);
} finally {
this.restorePreviousFramebufferObjectID(pGLState);
}
this.mInitialized = true;
}
好像事情是錯誤的幀緩存狀態...
更新
手機在事故發生至今的列表:
Sony - Sony Tablet S
TCT - ALCATEL ONE TOUCH 5020A
TCT - ALCATEL ONE TOUCH 6030N
VNPT Technology - VNPT Technology Smart Box
Q-Smart - S32
LGE - LG-E465g
LGE - LG-D682TR
LGE - LG-E451g
LGE - LG-D686
LGE - LG-E470f
HUAWEI - MediaPad 7 Youth
unknown - Bliss Pad B9712KB
samsung - GT-P5110
samsung - GT-I9505
samsung - Galaxy Nexus
samsung - GT-P3110
samsung - GT-P5100
samsung - GT-P3100
samsung - GT-I9105P
samsung - GT-I9082
samsung - GT-I9082L
samsung - GT-I9152
samsung - GT-P3113
E1A - E1A
LNV - LN1107
motorola - XT920
motorola - XT915
asus - ME172V
謝謝你的回答 - 我非常感謝!是的,我正在嘗試呈現RGBA8888紋理。我在其上渲染Sprites/Textures(TextureOptions.BILINEAR_PREMULTIPLYALPHA) - 它們充當「郵票」。我可以改變什麼 - 你知道一個替代方案嗎?謝謝你,有一個美好的一天! – sjkm
如果擴展名可用,則只呈現給RGBA8,否則返回到RGB565或RGB5_A1。缺乏一個體面的alpha通道可能會傷害你一點,這取決於你的精靈在做什麼,但如果該設備不支持RGBA8,我認爲你不會有太多的選擇。 – solidpixel
謝謝!總結如下:遊戲不是真的可玩嗎?我如何檢查RGBA8000是否受支持?你知道是否有可能排除不支持它的設備(例如通過Manifest)?我是否有權說這是一個特定於設備的問題(因此排除有問題的設備下載應用程序會「解決」問題)?請原諒我用這麼多問題溢出你:)!非常感謝。 – sjkm