Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ndk android.graphics.Canvas中使用的算法_Android Ndk_Android Canvas - Fatal编程技术网

Android ndk android.graphics.Canvas中使用的算法

Android ndk android.graphics.Canvas中使用的算法,android-ndk,android-canvas,Android Ndk,Android Canvas,我试图找出绘图算法在使用什么,尤其是drawLine和drawrick。我已经设法找到了,但我无法理解每次都使用哪种算法 有什么想法吗?总结评论: 绘图功能至少有两种实现,一种是纯软件(the)实现,另一种是启用时使用GPU实现 实现是用C++编写的,而不是java编写的。因为它必须考虑到绘制笔划宽度等特性,所以代码可能不像您发现的那样简单 在C++中,给定算法的实现速度比用java编程语言编写时快很多。这是一个宗教问题,为了消除“Java很慢”的概念,定期抛出各种基准测试。我认为C++有点表

我试图找出绘图算法在使用什么,尤其是
drawLine
drawrick
。我已经设法找到了,但我无法理解每次都使用哪种算法


有什么想法吗?

总结评论:

  • 绘图功能至少有两种实现,一种是纯软件(the)实现,另一种是启用时使用GPU实现

  • 实现是用C++编写的,而不是java编写的。因为它必须考虑到
    绘制
    笔划宽度等特性,所以代码可能不像您发现的那样简单

    在C++中,给定算法的实现速度比用java编程语言编写时快很多。这是一个宗教问题,为了消除“Java很慢”的概念,定期抛出各种基准测试。我认为C++有点表达力强,允许你更准确地告诉编译器你想要它做什么,尤其是Android上,NDK C++编译器比Dalvik或ART编译器更好。
许多功能有两种实现方式,一种是纯软件(通过Skia库),另一种是使用GLE。看见你想实现什么?@fadden我想自己实现
drawLine
drawCircle
+其他方法,所以我开始实现
Bresenham的line+circle算法。但是,视觉和性能结果不如
API的
one。这就是为什么我想知道为了实现这个特定的目标,使用了哪种算法,谁给出了很好的结果。请注意,我目前正在
Java
中实现这些算法,而不是通过
NDK
C\C++
中实现这些算法。这是否在性能上有意义?SKIa版本是用C++编写的,硬件加速版本是由GPU来执行的。用Java编写的代码的性能是无法比拟的。通用图形库必须处理您可以使用绘画进行的所有操作(笔划宽度、点画等),因此您不会总是找到类似Bresenham算法的直接实现。如果您想查看Skia代码,请参见:。对于快速绘制线条的代码,请使用google Michael Abrash。@fadden
“用Java编写的代码的性能是无法接近的”
。这是真的,考虑到我已经用Java实现了Bresenham的算法,而且性能还差得远。。你可以根据上面的评论写一个答案,所以我接受这个答案。我也检查了迈克尔·艾布拉什的情况,我发现了。如果我理解正确的话,他还建议使用Bresenham的算法*编辑:如果您能解释一下为什么与
C++
相比,Java性能如此之低,我将不胜感激,谢谢