2
로이드
에 opengles 스레드를 해제 할 수 없다. 다른 기기 (galaxy note2,3 galaxy S7)로 오류가 발생하지 않습니다. OpenGLES 2.0에 JNI를 사용하고 특정 장치에 4.3 버전 (API 18)이 있습니다.는 <p>함수, eglReleaseThread()를 호출</p> 즉시 애플리케이션이 갤럭시 S4 '는 특정 장치에 대한 임의의 반환 값없이 폐쇄 .. I 약간 문제가
이것은 파트 소스 코드입니다.
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
... 좀 도와주세요 :(
장치 드라이버의 버그처럼 보입니다. 어떤 갤럭시 S4의 특정 모델을 사용하고 있습니까? 일부는 SGX GPU를 기반으로하고 다른 일부는 Adreno GPU를 기반으로합니다. – solidpixel
@solidpixel 장치 드라이브에 버그가있는 경우 문제를 해결하는 방법? 정확히 어떤 GPU가 사용되는지 모르겠는데, 아마도 'SGX544MP3'을 기반으로 한 ** I9500/한국 모델 **입니다. GPU –
고칠 수 없습니다. 이를 해결할 수도 있지만 해결할 수는 없습니다. 가장 좋은 대답은'eglReleaseThread()'호출을 피하는 것입니다 ... 이론적으로'eglTerminate()'를 호출 할 때 모든 EGL 리소스를 해제해야합니다. – solidpixel