对于应用程序,即使当前未显示应用程序,我也希望在后台渲染内容。官方文档编写通过GLSurfaceView打开GLcontext。为了不显示图形和渲染到另一个目标,似乎没有真正的解决方案。
所以问题是如何在Android中创建没有GLSurfaceView的GL上下文?
使用案例:录制视频并将当前时间作为文本直接添加到视频中。因为基于CPU的图像处理只是为了减慢现场执行速度。至少如果录制时也应该显示视频。 OpenGL可以将所有内容简单地渲染到Framebuffer / Renderbuffer中。
答案 0 :(得分:4)
您不必使用GLSurfaceView
来进行OpenGL渲染。如果查看source code,您会发现它仅使用公开的API。它只是一个便利类,它使Android下最常见的OpenGL使用(使用OpenGL绘制视图的内容)非常容易。如果您的用例不同,那么您就......不要使用它。
用于更直接地创建上下文和渲染表面的API是EGL。 Android Java框架中有两个版本:EGL10和EGL14。 EGL10很老了,我强烈建议使用EGL14。
Android SDK文档中并未真正记录EGL调用,但您可以使用man pages on www.khronos.org查看已解释的调用。
直接使用EGL,您可以创建一个上下文和一个离屏渲染表面,使您可以在不使用任何视图的情况下使用OpenGL。
我发布了完整的代码,演示了如何在上一个答案中创建具有屏幕外渲染表面的上下文:GLES10.glGetIntegerv returns 0 in Lollipop only。
答案 1 :(得分:0)