我正在尝试找出正在使用的绘图算法android.graphics.Canvas,特别是drawLine
和drawCircle
。我设法找到Canvas_Delegate.java,但我无法理解每种情况下使用的算法。
有什么想法吗?
答案 0 :(得分:2)
总结评论:
至少有两种绘图函数的实现,一种纯粹用软件实现(Skia library),另一种在启用hardware acceleration时使用GPU。
< / LI> Skia实现是用C ++编写的,而不是Java。由于必须考虑笔画宽度等Paint
功能,因此代码可能不会像您找到的classic implementation那样简单。
使用C ++编写时,给定算法的实现通常比使用Java编程语言编写时快得多。这是一个宗教问题,周期性地抛出各种基准来消除“Java缓慢”的概念。我认为C ++更具表现力,允许您更准确地告诉编译器您想要它做什么,而在Android上,特别是NDK C ++编译器明显优于Dalvik或Art编译器。