Android,textureView 中的缓冲区

Android, Buffers in textureView

我想用TextureView画数学曲线(很多),数据源是外部设备。

在这里,我绘制的每个区域都必须在之前的区域上添加线条。

一直到使用 3 个缓冲区的 TextureView 渲染,我希望我在每时每刻都绘制缓冲区,就像源缓冲区一样,我只是要释放。

也就是说,我想要释放缓冲区中的内容,在绘制之前填充下一个缓冲区。

另一种可能性是,强制只使用一个缓冲区。

我明白了,可以获取位图和设置位图,但我想在内存中免费执行此操作。

任何人都知道这是否可能。

我会推荐两件事:

  1. 假设您使用 Canvas 进行渲染,请不要使用 TextureView。请改用 custom View。 TextureView 并没有真正给你带来优势,你失去了硬件加速渲染。
  2. 渲染到屏幕外的位图,然后将位图 blit 到视图。离屏渲染不是硬件加速的,但您可以避免重新绘制整个场景。您将不得不通过实验来确定哪个最有效。

如果您使用 OpenGL ES 进行绘图,只需将所有内容绘制到每一帧的 TextureView 中(除非您想使用 FBO)。

你可以试试Surface的lockCanvas(null)

  1. 使用TextureView.getSurfaceTexture获得表面纹理
  2. 使用 new Surface(surfaceTexture) 创建表面
  3. 使用 Surface.lockCanvas 或 Canvas.lockHardwareCanvas 得到一个 canvas。

然后你可以用这个canvas在textureView上画很多东西