android.graphics.Canvas中使用的算法
Algorithms used in android.graphics.Canvas
我想知道什么绘图算法android.graphics.Canvas is using, and especialy for drawLine
and drawCircle
. I have managed to find Canvas_Delegate.java,但我无法理解每种情况下使用哪种算法。
有什么想法吗?
总结评论:
绘图功能至少有两种实现方式,一种是纯软件实现(Skia library), and one that uses the GPU when hardware acceleration已启用。
Skia 实现是用 C++ 编写的,而不是 Java。因为它必须考虑笔划宽度等 Paint
特性,所以代码可能不像您找到的 classic implementation 那样简单。
用 C++ 编写的给定算法的实现通常比用 Java 编程语言编写的快得多。这是一个宗教问题,定期抛出各种基准来消除 "Java is slow" 概念。我认为 C++ 更具表现力,允许您更准确地告诉编译器您想要它做什么,并且在 Android 上,尤其是 NDK C++ 编译器明显优于 Dalvik 或 Art 编译器。
我想知道什么绘图算法android.graphics.Canvas is using, and especialy for drawLine
and drawCircle
. I have managed to find Canvas_Delegate.java,但我无法理解每种情况下使用哪种算法。
有什么想法吗?
总结评论:
绘图功能至少有两种实现方式,一种是纯软件实现(Skia library), and one that uses the GPU when hardware acceleration已启用。
Skia 实现是用 C++ 编写的,而不是 Java。因为它必须考虑笔划宽度等
Paint
特性,所以代码可能不像您找到的 classic implementation 那样简单。用 C++ 编写的给定算法的实现通常比用 Java 编程语言编写的快得多。这是一个宗教问题,定期抛出各种基准来消除 "Java is slow" 概念。我认为 C++ 更具表现力,允许您更准确地告诉编译器您想要它做什么,并且在 Android 上,尤其是 NDK C++ 编译器明显优于 Dalvik 或 Art 编译器。