我在Google Play上有一个应用程序,用于倒计时数字和字母.在这个应用程序中,我有以下活动:
我使用Google Analytics和ACRA进行错误报告.我不使用GLsurfaceView,但我每天使用一次或两次ACRA,这给了我这些错误:
java.lang.RuntimeException: createWindowSurface failed EGL_BAD_ALLOC
at android.view.HardwareRenderer$GlRenderer.createSurface(HardwareRenderer.java:763)
at android.view.HardwareRenderer$GlRenderer.createEglSurface(HardwareRenderer.java:663)
at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:502)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1325)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2467)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
有谁知道发生了什么?我不使用surfaceView; 谁能帮我?
我的程序在两个之间切换Activities,每个程序都GLSurfaceView使用VBO扩展派生.在两个活动之间来回切换几次后,程序崩溃并抛出以下异常.每次有上下文切换时,都会删除VBO缓冲区,调用onStop(),并且下一个Activity的新实例GLSurfaceView会膨胀.我重构程序上只有一个运行GLSurfaceView和Activity,程序似乎没有发生任何事件运行.仅使用多边形和颜色,没有纹理.这是损害:
Java.lang.RuntimeException: createContext failed: EGL_BAD_ALLOC
at android.opengl.GLSurfaceView$EglHelper
.throwEglException(GLSurfaceView.java:1079)
at android.opengl.GLSurfaceView$EglHelper
.throwEglException(GLSurfaceView.java:1071)
at android.opengl.GLSurfaceView$EglHelper
.start(GLSurfaceView.java:927)
at android.opengl.GLSurfaceView$GLThread
.guardedRun(GLSurfaceView.java:1248)
at android.opengl.GLSurfaceView$GLThread
.run(GLSurfaceView.java:1118)
Run Code Online (Sandbox Code Playgroud)
从做一些互联网研究,这是一个公认的错误.那么如何进行损害控制呢?在正确的方向上轻推+200.
编辑:我解决了问题(我打算在视图上调用ONPAUSE()/ ONRESTART()).第一个接受任何关于+2的任何人的答案.
我正在使用OpenGL ES 2.0和Android NDK r8b.我有一个用于工作线程的共享上下文.当我尝试使用eglMakeCurrent将共享上下文绑定到工作线程时,我得到错误EGL_BAD_ALLOC.
现在让我感到困惑的是,这段代码在以前工作得很好......我不知道我做了什么来打破它...... EGL文档说这个错误与资源不可用有关,但我运行的是同一个应用程序曾经在这个完全相同的设备上完美地工作,并且所有纹理从主线程加载得很好.
那么可能导致此错误的原因是什么?
这是我的egl初始化:
bool Initialize(void *displaySurface)
{
assert(displaySurface);
ANativeWindow *window = (ANativeWindow*)displaySurface;
EGLint dummy, format;
display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(display, 0, 0);
const EGLint configAttribs[] =
{
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_ALPHA_SIZE, 8,
EGL_BUFFER_SIZE, 32,
EGL_DEPTH_SIZE, 24,
EGL_NONE
};
const EGLint auxConfigAttribs[] =
{
EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_ALPHA_SIZE, 8,
EGL_BUFFER_SIZE, 32,
EGL_DEPTH_SIZE, 24,
EGL_NONE
};
EGLint contextAttribs[] =
{
EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE …Run Code Online (Sandbox Code Playgroud)