gpt4 book ai didi

android - 无法在android上的opengles中释放线程

转载 作者:行者123 更新时间:2023-11-29 01:11:20 25 4
gpt4 key购买 nike

我有一些问题..

当调用函数 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

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

最佳答案

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

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

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

Surface surface = new Surface(mSurfaceTexture);

关于android - 无法在android上的opengles中释放线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42758850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com