android 无法在 opengles 中释放线程

can't release thread in opengles on android

我有一些问题..

当调用函数 eglReleaseThread() 时,应用程序立即关闭,特定设备上没有任何 return 值 'Galaxy S4'。 其他设备(galaxy note2,3 galaxy S7)不会出错。 我将JNI用于openGLES 2.0,具体设备有4.3版本(API 18)

这是发布部分源代码。

if (mEGLDisplay != EGL_NO_DISPLAY) {
    CppLog("env - release - exist display");
    if(!eglMakeCurrent(mEGLDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)){
        CppError("ImageProcGLES - eglMakeCurrent");
        return -1;
    }
    else{
        CppLog("env - release - eglMakeCurrent");
    }

    if(!eglDestroySurface(mEGLDisplay, mEGLSurface)){
        CppError("ImageProcGLES - eglDestroySurface Error.");
        return -1;
    }
    else{
        CppLog("env - release - eglDestroySurface");
    }

    if(!eglDestroyContext(mEGLDisplay, mEGLContext)){
        CppError("ImageProcGLES - eglDestroyContext.");
        return -1;
    }else{
        CppLog("env - release - eglDestroyContext");
    }

    if(!eglReleaseThread()){
        CppError("ImageProcGLES - eglReleaseThread.");
        return -1;
    }else{
        CppLog("env - release - eglReleaseThread");
    }

    if(!eglTerminate(mEGLDisplay)){
        CppError("ImageProcGLES - eglTerminate.");
        return -1;
    }else{
        CppLog("env - release - eglTerminate");
    }
}
else{
    CppError("env - release - No Display");
}

这是 return 日志。

    buffer - release
    env - release - start
    env - release - exist display
    env - release - eglMakeCurrent
    env - release - eglDestroySurface
    env - release - eglDestroyContext

如果你有什么想法...请帮助我:(

这是 EGL 驱动程序中的错误。我曾经遇到过同样的问题,要解决它,请从 Surface 而不是 SurfaceTexture 创建 egl 表面。 创建曲面时:

mSurface = new Surface(mSurfaceTexture);
             mEglSurface = EGL14.eglCreateWindowSurface(mEglDisplay, 
mEglConfig, mSurface, surfaceAttribs, 0);

这里的关键时刻是从 SurfaceTexture 创建 Surface:

Surface surface = new Surface(mSurfaceTexture);