gpt4 book ai didi

android - 优化 Android 中的组合渲染和 Canvas 绘制

转载 作者:行者123 更新时间:2023-11-30 02:54:42 25 4
gpt4 key购买 nike

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

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

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)中,绘图是用 Canvas 绘制的,如果我需要缩放它会花费相当长的时间。我想加快这部分的速度。

我听说过硬件加速 Canvas ,它们速度更快,但我对它的用法有点困惑。我需要绘制速度更快但仍能让我访问结果以进行进一步处理的东西。

所以,我的问题是:

  • 硬件加速 Canvas 是只与 View 一起工作,还是也与 View 一起工作位图?即,如果我这样做,假设有 N 个循环,但对于我需要的每个循环之前的结果,还有用吗?

  • 如果没有,有什么方法可以加快 Canvas 绘制速度?

非常感谢。

最佳答案

因为我们不是在谈论屏幕上的过度绘制和多 View 渲染,所以与 Canvas 绘制性能没有太大关系(是的,假设 View 是硬件加速的)。总之,在SurfaceTexture中绘制位图数据应该是在屏幕上“写入”图像数据的更快方式(如文档所建议的那样)。

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

关于android - 优化 Android 中的组合渲染和 Canvas 绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com