gpt4 book ai didi

android - 关于 Android 中高性能绘图的提示

转载 作者:IT老高 更新时间:2023-10-28 23:23:24 27 4
gpt4 key购买 nike

背景

我正在为一个 android 应用程序编写一个图形库(是的,我知道那里有很多,但没有一个提供我们需要的可定制性)。

我希望图表可以缩放和平移。

问题

我希望体验流畅,CPU 占用少。

解决方案

View.onDraw():

好处

  • 一些容易实现的东西

缺点

  • 表现不佳? (除非它使用 OpenGL,是吗?)

位图:

好处

  • 非常容易实现
  • 出色的表现

缺点

  • 不得不使用丑陋的缩放

OpenGL:

好处

  • 根据我的实现,性能可能不错

缺点

  • 更多工作需要实现

最后的话

OpenGL 可能是专业的解决方案,肯定会提供更大的灵 active ,但需要更多的工作(具体多少尚不清楚)。

在 OpenGL 中绝对更容易的一件事是平移/缩放,因为我可以操纵矩阵来使其正确,但我认为其余的应该更难。

我不怕弄脏我的手,但我想在开始挖掘之前知道我的方向是正确的。

我错过了任何解决方案吗?我的所有解决方案都合理吗?


补充说明:

我可以补充一点,当图表发生变化时,我想为变化设置动画,这可能是最艰巨的任务。

最佳答案

使用 View 的问题在于您继承了 UI 工具包本身的开销。虽然该工具包经过了很好的优化,但它的作用不一定是您想要的。当您想要控制绘图时,最大的缺点是无效/绘图循环。

您可以使用 SurfaceView 解决这个“问题”。 SurfaceView 允许您使用自己的渲染线程渲染到窗口上,从而绕过 UI 工具包的开销。而且您仍然可以使用 Canvas 2D 渲染 API。

然而,Canvas 使用的是软件渲染管道。您的性能主要取决于 CPU 的速度和可用带宽。在实践中,它很少像 OpenGL 那样快。 Android 3.0 为 Canvas 提供了一个新的硬件管道,但仅限于通过 Views 渲染时。您目前不能使用硬件管道直接渲染到 SurfaceView。

我建议你先试试 SurfaceView。如果您正确编写代码(不要绘制超出您需​​要的内容,仅重绘已更改的内容等),您应该能够达到您所寻求的性能。如果这不起作用,请使用 OpenGL。

关于android - 关于 Android 中高性能绘图的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881633/

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