Release I irgendein Problem haben ..nicht Gewinde in OpenGLES auf android
Wenn die Funktion aufrufen, eglReleaseThread() sofort Anwendung ohne Rückgabewert auf bestimmten Gerät geschlossen ist, die ‚Galaxy S4‘ ist. andere Geräte (Galaxy Note2,3 Galaxy S7) machen den Fehler nicht. Ich benutze JNI für openGLES 2.0 und das spezifische Gerät hat 4.3 Version (API 18)
Dies ist Release Part Quellcode.
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");
}
und dies ist Rückmeldung.
buffer - release
env - release - start
env - release - exist display
env - release - eglMakeCurrent
env - release - eglDestroySurface
env - release - eglDestroyContext
Wenn Sie eine Idee haben ... bitte helft mir :(
Sieht aus wie ein Fehler im Gerätetreiber. Welches spezifische Modell des Galaxy S4 verwendest du? Einige basieren auf SGX-GPUs, andere basieren auf Adreno-GPUs. – solidpixel
@solidpixel, wenn es ein Fehler im Gerätetreiber ist, wie das Problem zu beheben? Ich weiß nicht genau, welche GPU verwendet wird, vielleicht ist es ** I9500/Südkorea Modell **, das auf 'SGX544MP3' GPU basiert –
Sie können es nicht beheben. Workaround vielleicht, aber nicht beheben. Die beste Antwort ist wahrscheinlich nur vermeiden, 'eglReleaseThread() 'zu nennen ... in der Theorie sollten alle EGL-Ressourcen freigegeben werden, wenn Sie' eglTerminate() 'auf jeden Fall aufrufen. – solidpixel