Исключение Expression Exception: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

Я разработал 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 

Solutions Collecting From Web of "Исключение Expression Exception: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"

На основе кода, к которому вы привязались, похоже, что вы пытаетесь отобразить текстуру RGBA8888. Это не всегда доступно на устройствах OpenGL ES 2.0, поскольку оно относится ко времени, когда большинство устройств используют 16-разрядные дисплеи.

Единственные обязательные форматы в OpenGL ES 2.x задокументированы в спецификации под кодом ошибки, который вы получаете …

Цели RGBA8 доступны только в том случае, если это расширение открыто:

… так что очень похоже, что некоторые пользователи используют более старое устройство с графическим процессором, который не подвергает это расширение. Чтобы проверить, поддерживается ли расширение, используйте glGetString (см. Ниже) с GL_EXTENSIONS :

… и посмотреть, присутствует ли в этом списке значение OES_rgb_rgba8 . Если это не так, то ваш единственный реальный вариант – вернуться к чему-то еще в обязательном формате ES2.x, таком как RGB565 или RGB5_A1.