显示在TextureView记录帧的MP4(Record frames displayed on T

2019-09-29 07:40发布

我设法写演示显示上TextureView 3D模型和模型能够根据手机的传感器移动。 3D引擎是由C ++,我需要做的是给TextureView的表面纹理的3D引擎是什么写道。 该引擎调用函数ANativeWindow_fromSurface检索本地窗口并在其上绘制3D模型。 3D引擎是不是我想谈谈对这个问题的关键点。

现在,我想记录的移动3D模型的视频。 一种方法是使用GL_TEXTURE_EXTERNAL_OES质地就像grafika,使3D引擎绘制帧的OES质感和绘制纹理内容updateTexImage()的每次调用后筛选。但对于一些限制,我不能使用这种方式。

我打算直接使用TextureView的表面纹理。 我认为,功能,如attachToGLContext()和detachFromGLContext()将是我的工作是有用的。

任何人都可以给我一些建议?

Answer 1:

Grafika的“记录GL应用程序”具有操作的三种不同的模式:

  1. 绘制两遍。
  2. 渲染到离屏p缓冲器,那么的blit的两倍。
  3. 抽奖一次,然后帧缓存之间的复制(需要GLES 3)。

如果您可以配置呈现给EGL表面,方法2和3会工作。 对于办法#3,记住,像素不要去表面(这是Android的表面,而不是EGL表面),直到你调用eglSwapBuffers()

如果发动机代码管理EGL表面,并调用eglSwapBuffers()为你,那么事情比较烦人一点。 该表面纹理安装/拆卸通话将让你与来自不同背景EGL输出访问GLES质感,但渲染线程需要的是渲染视图界面时。 我不能完全肯定这是如何工作的。



文章来源: Record frames displayed on TextureView to mp4