2
アンドロイド
にopengles内のスレッドを解放することはできません。 他のデバイス(galaxy note2,3 galaxy S7)ではエラーが発生しません。 IはopenGLES 2.0のJNIを使用して、特定のデバイスがは <p>機能、eglReleaseThread()を呼び出し</p>は、すぐにアプリケーションを「ギャラクシーS4」で、特定のデバイス上の任意の戻り値なしで閉じられている..私はいくつかの問題を抱えている
これは解除部のソースコードである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
...私を助けてください:(
デバイスドライバのバグのようです。どのGalaxy S4の特定のモデルを使用していますか? SGX GPUに基づくものもあれば、Adreno GPUに基づくものもあります。 – solidpixel
@solidpixelデバイスドライブにバグがある場合は、問題の解決方法を教えてください。 どのGPUが使用されているのか分かりませんが、おそらく** SGX544MP3に基づいた** I9500 /韓国モデル** GPU –
修正できません。おそらくそれを回避するが、修正しないでください。最良の答えは 'eglReleaseThread()'の呼び出しを避けるだけです...理論的には、とにかく 'eglTerminate()'を呼び出すと、すべてのEGLリソースを解放する必要があります。 – solidpixel