有没有办法确保Android live墙纸获得OpenGL ES上下文?
据报道,某些第三方Android启动器/主屏幕在启动实时墙纸时可能不会释放3D OpenGL ES资源。这可能会导致实时墙纸崩溃,从用户的角度来看,实时墙纸有问题 有没有办法对Android live墙纸进行编程,以确保它被授予OpenGL ES上下文 更广义地说,是否有任何方法可以编程Android应用程序/墙纸以避免出现此错误:有没有办法确保Android live墙纸获得OpenGL ES上下文?,android,opengl-es,3d,live-wallpaper,Android,Opengl Es,3d,Live Wallpaper,据报道,某些第三方Android启动器/主屏幕在启动实时墙纸时可能不会释放3D OpenGL ES资源。这可能会导致实时墙纸崩溃,从用户的角度来看,实时墙纸有问题 有没有办法对Android live墙纸进行编程,以确保它被授予OpenGL ES上下文 更广义地说,是否有任何方法可以编程Android应用程序/墙纸以避免出现此错误: "ERROR/libEGL(6044): call to OpenGL ES API with no current context" 我认为从另一个应用程序中
"ERROR/libEGL(6044): call to OpenGL ES API with no current context"
我认为从另一个应用程序中获取OpenGL ES上下文可能是危险的——如果这是可能的话。作为替代方案,是否有任何方法请求上下文,然后等待它被授予?根据:
使用eglGetCurrentContext、eglGetCurrentDisplay和
eglGetCurrentSurface查询当前渲染上下文和
关联的显示连接和曲面
链接文档用于eglmakefurrent
函数,该函数应请求总账上下文。使用以下命令查询上下文是否是自由的:
EGL10 egl = (EGL10) EGLContext.getEGL();
EGLContext eglc = egl.eglGetCurrentContext();
if(eglc == egl.EGL_NO_CONTEXT){
Log.d("OpenGLESTag","No context");
}
您可以使用eglGetDisplay(egl.egl_DEFAULT_Display)中的egl Display参数调用egl.makeCurrent,但我不确定与曲面对象(SurfaceView、GLSurfaceView、Canvas等)结合使用时会发生什么。