Java2D 与 Javafx Canvas 性能对比

标签 java performance javafx-2

我正在开发一个 Java 程序,它可以在屏幕上绘制复杂的分形形状,并允许用户“放大”并四处移动以探索这些形状。这意味着必须进行计算才能显示分形,并且必须达到一定的帧速率(大约 20 fps 或更高)。

我有几种方法可以用来实现这一点,但我想知道哪种方法的性能最好。

首先,我认为可以使用空白的 Image(特别是 BufferedImage)和它的 Graphics2D 上下文来绘制屏幕外的分形,然后将其传递给将其绘制到屏幕上的 UI。这将意味着创建很多图像类型,我猜这会占用大量内存。

一个类似的选择是创建两个图像,然后在显示第一个图像的同时绘制第二个图像,反之亦然。这种方法会产生更好的性能吗?

我的第三个选择是使用 javafx 的 Canvas API,并使用 Canvas 而不是 Image,同时基本上做同样的事情(离屏绘图)。

什么会给我最好的结果?或者还有其他我应该考虑的事情吗?

谢谢

最佳答案

我用 JavaFX 编写了一个(非动画)分形生成器。我使用了 WritableImage 并在其 PixelWriter 上调用了 setColor。我在任务中生成了 WritableImage,并从任务的调用方法中返回了图像;然后我简单地用生成的图像更新了 ImageView 的图像。另一种选择是在任务中生成颜色,作为一个整数或字节数组,并通过调用其中一个 setPixels() 方法将它们批量复制到单个 WritableImage 中。我认为其中任何一个都会表现得很好。

据我了解,JavaFX 中的 Canvas 会缓存其绘图命令,然后在渲染时执行它们;我认为这不会表现得很好。但我可能错了。

关于Java2D 与 Javafx Canvas 性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358212/

相关文章:

java - 帮助基本的 Android View ,用于 Next/Prev 导航,如电子邮件设置

java matrix exp(A) 用矩阵计算指数

java - 如何在java代码中获取guvnor规则的输出结果

certificate - javafx 2.1 中的签名者证书

java - 从 a^b 右侧查找第 k 位数字的输出未按预期输出?

python - 为什么在 Python 3.6 alpha 中文字格式的字符串(f 字符串)如此缓慢? (现在在 3.6 稳定版中修复)

asp.net-mvc - 哪种类型的缓存适合在 Umbraco 项目中使用?如何实现智能缓存?

jQuery的scrollTo/localScroll速度控制?

java - 如何获取完全加载页面的 html(使用 javascript)作为 java 中的输入?

java - 如何在 Eclipse 插件中使用正确版本的 JavaFX?