在后台运行Android OpenGL作为App的渲染资源?

And*_*der 12 android opengl-es

我想在我的应用程序的后台运行Android OpenGL-ES表面,为应用程序提供动态图形资源(位图等).OpenGl GLSurfaceView不是我的应用程序的可见屏幕; 它仅用作渲染工厂来制造供主要活动使用的图形.

有没有人知道如何在不是活动视图的情况下运行Android GLSurfaceView?Google Android文档很清楚,当GLSurfaceView失去其作为主视图的状态时,表面将与其所有资源一起被销毁.

有什么方法可以保持GLSurfaceView及其相关的GLSurfaceView.Renderer在它(而且从不是)应用程序的主视图时正常运行?

Jos*_*osh 7

对于您要做的事情,您应该完全跳过GLSurfaceView.由于您只想进行一些OpenGL屏幕外渲染,您可以使用EGL像素缓冲区并将其转换为位图.请参阅anddev上的此主题以获取解决方案.我在一些应用程序中使用它非常成功.

对该线程底部的实现有点错误,因为它做了一些非常简单的EGL选择.我建议你实现一个更强大的选择器,你可以在Robert Green的GLWallpaperService中找到,如果你愿意的话.

我最终做的另一个改变是删除垂直像素镜像.我刚刚在onSurfaceCreate中翻转我的视口,而不是在写入位图时手动翻转渲染像素.

祝好运!


hac*_*bod 2

我强烈建议您不要尝试这样做。Android 设备上的许多当前驱动程序不支持跨进程的多个活动 GL 上下文;如果驱动程序确实支持此功能,则该功能尚未得到太多运用,因为 Android 本身并不这样做,因此可能会导致严重的错误。

仅从 Android 3.0 开始的平台才使用多个 GL 上下文。