我开发了一款由很多人玩的Android游戏。 100-200的一个用户面临一个我无法理解的异常。
我使用RenderTexture,当我尝试初始化它时抛出以下异常:
Fatal Exception: org.andengine.opengl.exception.RenderTextureInitializationException
org.andengine.opengl.exception.GLFrameBufferException: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
它适用于所有设备的99%。 init方法如下所示:
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;
}
FrameBuffer-Status似乎有问题......
更新
到目前为止发生崩溃的手机列表:
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
答案 0 :(得分:0)
根据您链接的代码,看起来您正在尝试渲染为RGBA8888纹理。这在OpenGL ES 2.0设备上并不总是可用,因为它可以追溯到大多数设备使用16位显示器的时候。
OpenGL ES 2.x中唯一的强制格式在规范中记录在您获得的错误代码中...
RGBA8目标仅在此扩展程序公开时可用:
...所以它非常像某些用户正在使用带有GPU的旧设备,而不会暴露此扩展。要检查扩展程序是否受支持,请使用glGetString
(见下文)GL_EXTENSIONS
:
...并查看此列表中是否存在OES_rgb_rgba8
值。如果不是那么你唯一真正的选择是回归到强制性ES2.x格式集中的其他东西,如RGB565或RGB5_A1。