Android 开启相机预览的后台 OpenGL ES 线程
Background OpenGL ES thread with camera preview on Android
有没有办法让后台线程使用 OpenGL ES 纹理访问相机预览?
在用户可见的视图中使用 OpenGL ES 访问相机预览是完全没问题的。我需要在 OpenGL 上下文中的后台线程中访问相机帧。通过着色器转换后使用 glReadPixels 下载结果数据,并在 CPU 中进行进一步处理。用户视图应该不会受到影响。
支持在后台逐帧处理的方法是使用 onPreviewFrame()
回调。无论您做什么,都不会影响用户预览,无论是表面还是纹理。
如果您希望 onPreviewFrame()
回调到达后台线程,您应该 openCamera()
在这个线程上,并且它必须是一个 Handler 线程(即有它的 Looper),见 Best use of HandlerThread over other similar classes
有没有办法让后台线程使用 OpenGL ES 纹理访问相机预览?
在用户可见的视图中使用 OpenGL ES 访问相机预览是完全没问题的。我需要在 OpenGL 上下文中的后台线程中访问相机帧。通过着色器转换后使用 glReadPixels 下载结果数据,并在 CPU 中进行进一步处理。用户视图应该不会受到影响。
支持在后台逐帧处理的方法是使用 onPreviewFrame()
回调。无论您做什么,都不会影响用户预览,无论是表面还是纹理。
如果您希望 onPreviewFrame()
回调到达后台线程,您应该 openCamera()
在这个线程上,并且它必须是一个 Handler 线程(即有它的 Looper),见 Best use of HandlerThread over other similar classes