Nic*_* A. 17 performance android drawing rendering opengl-es
我正在为一个Android应用程序编写一个图形库(是的,我知道有很多,但没有提供我们需要的可定制性).
我希望图表可以缩放和平移.
我希望体验顺畅,留下小巧的CPU占用空间.
View.onDraw(Canvas)BitmapOpenGLOpenGL可能是专业的解决方案,肯定会提供更多的灵活性,但它需要更多的工作(多少不清楚).
有一点在OpenGL中更容易实现平移/缩放,因为我可以操纵矩阵来使其正确,其余的应该更难,尽管我认为.
我不怕弄脏手,但我想知道在开始挖掘之前我正朝着正确的方向前进.
我错过了任何解决方案吗?我所有的解决方案都理智吗?
我可以补充一点,当图形发生变化时,我希望对变化进行动画处理,这可能是最苛刻的任务.
Rom*_*Guy 16
使用Views的问题在于您继承了UI工具包本身的开销.虽然工具包经过了很好的优化,但它的功能并不一定是你想要的.想要控制绘图时最大的缺点是invalidate/draw循环.
您可以使用SurfaceView解决此"问题".SurfaceView允许您使用自己的渲染线程渲染到窗口,从而绕过UI工具包的开销.您仍然可以使用Canvas 2D渲染API.
然而,Canvas正在使用软件渲染管道.您的性能主要取决于CPU的速度和可用带宽.在实践中,它很少像OpenGL一样快.Android 3.0为Canvas提供了一个新的硬件管道,但仅限于通过Views渲染时.您目前无法使用硬件管道直接渲染到SurfaceView上.
我建议你首先尝试使用SurfaceView.如果您正确编写代码(不要绘制超过您需要的代码,只重绘已更改的内容等),您应该能够实现所寻求的性能.如果这不起作用,请使用OpenGL.
| 归档时间: |
|
| 查看次数: |
3365 次 |
| 最近记录: |