我有一些问题..
当调用函数eglReleaseThread()时,立即关闭应用程序,而在特定设备上没有任何返回值,即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");
}
这是返回日志。
buffer - release
env - release - start
env - release - exist display
env - release - eglMakeCurrent
env - release - eglDestroySurface
env - release - eglDestroyContext
如果您有任何想法......请帮助我:(
答案 0 :(得分:1)
这是EGL驱动程序中的一个错误。我曾经有同样的问题,要解决它从Surface创建egl表面而不是SurfaceTexture。 创建曲面时:
mSurface = new Surface(mSurfaceTexture);
mEglSurface = EGL14.eglCreateWindowSurface(mEglDisplay,
mEglConfig, mSurface, surfaceAttribs, 0);
这里的关键时刻是从SurfaceTexture创建Surface:
Surface surface = new Surface(mSurfaceTexture);