在Android中优化组合渲染和画布绘制

时间:2014-05-05 20:58:41

标签: android optimization canvas rendering hardware-acceleration

我有一组高度优化的图形例程用于实时效果(适用于相机应用)

使用它们的例程以下列方式在分层模式下工作:

Each time the process is executed (on each preview frame)

  > We have a bitmap (after YUV2RGB conversion) to start working with. Will call it B(0)
  > We have N independent sets of "layered lenses" with its properties: window (subset
   of the bitmap to be processed), color conversion, lighting, distortion, transparency...

For each lens (L=1...N), and sequentially, do the following:
  1) Take B(L-1) and, according to layer properties: process a subset of it.
  2) Draw the results onto the same bitmap. It will be called bitmap(L)

2)绘图是用画布制作的,如果我需要缩放它需要相当长的时间。我想加快这一部分。

我听说过硬件加速的画布并且它们更快,但我对它的使用有点困惑。我需要更快速的东西,但仍然可以访问结果以便进一步处理。

所以,我的问题是:

  • 硬件加速画布仅适用于视图,或者也适用于 位图?即,如果我这样做,让我们说N个循环,但对于我需要的每个循环 以前的结果会有用吗?

  • 如果没有,有什么方法可以加快画布的速度?

非常感谢。

1 个答案:

答案 0 :(得分:1)

因为我们不是在谈论屏幕上的透支和多视图渲染,所以与画布绘制性能没什么关系(是的,假设视图是硬件加速的)。 无论如何,在SurfaceTexture中绘制位图数据应该是更快的方式来编写"屏幕上的图像数据(如文档所示)。

您能告诉我们有关实施的更多信息吗?看看你的编写任务,我想你可以尝试从图像处理步骤中获得更多性能。他们是如何实施的?通常在本机层(JNI / C ++)进行快速图像细化,并尽可能使用Renderscript。 可以获得一个很好的解决方案,可以在JNI级别上移动所有细节,将图像处理为Opengl ES纹理,可以在SurfaceTexture中快速绘制。