2015-10-08 3 views
1

Я использую createOffscreenSurface из grafika:Как исправить ошибку 0x3009 (EGL_BAD_MATCH) при вызове eglCreatePbufferSurface?

/** 
* Creates an off-screen surface. 
*/ 
public void createOffscreenSurface(int width, int height) { 
    if (mEGLSurface != EGL14.EGL_NO_SURFACE) { 
     throw new IllegalStateException("surface already created"); 
    } 
    mEGLSurface = mEglCore.createOffscreenSurface(width, height); 
    mWidth = width; 
    mHeight = height; 
} 

/** 
* Creates an EGL surface associated with an offscreen buffer. 
*/ 
public EGLSurface createOffscreenSurface(int width, int height) { 
    int[] surfaceAttribs = { 
      EGL14.EGL_WIDTH, width, 
      EGL14.EGL_HEIGHT, height, 
      EGL14.EGL_NONE 
    }; 
    EGLSurface eglSurface = EGL14.eglCreatePbufferSurface(mEGLDisplay, mEGLConfig, 
      surfaceAttribs, 0); 
    checkEglError("eglCreatePbufferSurface"); 
    if (eglSurface == null) { 
     throw new RuntimeException("surface was null"); 
    } 
    return eglSurface; 
} 

Он отлично работает на некоторых устройствах, но не на других устройствах. Тзд ошибки:

java.lang.RuntimeException: eglCreatePbufferSurface: EGL error: 0x3009 

я гугл и получил следующую информацию:

  1. Вам нужно настроить вид поверхности с соответствующим форматом пиксель для этого телефона, который, скорее всего, PixelFormat.RGB565 (link)

  2. Я почти уверен, ваша поверхность является разного формата до фактической поверхности дисплея. (link)

Однако, я не есть идеи, чтобы исправить это. Какие-либо предложения ?

+0

На устройствах, где она терпит неудачу, не деятельность Grafika, которые используют pbuffers работать? Если да, то чем отличается от того, как вы его используете? – fadden

+0

Сбой здесь: 'EGLSurface eglSurface = EGL14.eglCreatePbufferSurface (mEGLDisplay, mEGLConfig, surfaceAttribs, 0);' Я использую 'OffscreenSurface' для создания снимка экрана. –

+0

См. Решение здесь: [http://stackoverflow.com/questions/40697339/error-egl-bad-match-in-android-studio-emulator/41948265#41948265](http://stackoverflow.com/questions/ 40697339/error-egl-bad-match-in-android-studio-emulator/41948265 # 41948265) –

ответ

0

Использование

new EglCore(EGL14.eglGetCurrentContext(), 0) 

заменить

new EglCore(newSharedContext, EglCore.FLAG_RECORDABLE); 
+0

Это не работает на «Acer Liquid E3 +» Есть ли другие идеи? –

 Смежные вопросы

  • Нет связанных вопросов^_^