1

我指的是演示应用Grafika,其中CameraCaptureActivity录制视频,同时显示应用效果的实时预览。

在 CameraCaptureActivity 中录制时,应用到来自相机的帧的任何效果都会执行两次。
一次用于预览,一次用于将视频保存到文件中。

由于预览的同一帧被保存到文件中,如果可以只执行一次,它将节省大量处理。

帧的渲染直接发生在两个表面上,一个是 GLSurfaceView(用于预览),另一个是 MediaCodec(保存部分)。

有没有办法只渲染一次 OpenGL 效果?

如果我可以将一个表面的内容复制到另一个表面,那就太好了。
有没有办法做到这一点?

4

1 回答 1

0

是的:您可以渲染到 FBO,然后将输出 blit 两次,一次用于显示,一次用于记录。

Grafika 的“记录 GL 应用程序”活动演示了解决该问题的三种不同方法(其中一种仅适用于 GLES 3.0+)。该doFrame()方法完成工作;draw-once-blit-twice 方法目前在这里

于 2015-05-28T15:47:27.317 回答