Я использую 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
я гугл и получил следующую информацию:
-
Вам нужно настроить вид поверхности с соответствующим форматом пиксель для этого телефона, который, скорее всего, PixelFormat.RGB565 (link)
-
Я почти уверен, ваша поверхность является разного формата до фактической поверхности дисплея. (link)
Однако, я не есть идеи, чтобы исправить это. Какие-либо предложения ?
На устройствах, где она терпит неудачу, не деятельность Grafika, которые используют pbuffers работать? Если да, то чем отличается от того, как вы его используете? – fadden
Сбой здесь: 'EGLSurface eglSurface = EGL14.eglCreatePbufferSurface (mEGLDisplay, mEGLConfig, surfaceAttribs, 0);' Я использую 'OffscreenSurface' для создания снимка экрана. –
См. Решение здесь: [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) –