java - 绘制数千个粒子的更高效方法(Java/Android)

标签 java android optimization draw particles

所以我正在编写一种粒子模拟器,就像“落沙游戏”(如果您知道那是什么),现在我遇到了障碍。我这样做的方式是我有一个粒子对象,它基本上现在有一个位置(int x,int y),仅此而已。我绘制/移动它们的方式是使用线程和 android 面板的 onDraw 事件。每次调用 onDraw 时,我循环遍历所有粒子,将它们向下移动一个像素,除非它们触及底部然后绘制它们,这非常平滑,直到我达到大约 200 个粒子,然后 fps 显着下降。我知道我这样做的计算量很大,没有关于它的争论,但是有什么方法可以让我绘制更多的粒子并减少延迟吗?

提前致谢。

最佳答案

我认为您为此使用了单像素绘图功能?那确实会很慢。

我看到了一些改进它的方法。首先是将像素放入内存位图中,然后同时绘制整个位图。其次,由于粒子总是向下移动一个像素,您可以滚动部分位图而不是重新绘制所有内容。如果 Android 没有滚动条,则只需将位图向下绘制一个像素并为滚动条上方的粒子启动一个新位图。您必须修复底部的颗粒,但这些颗粒较少。

关于java - 绘制数千个粒子的更高效方法(Java/Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361426/

相关文章:

java - 如何使用 "Spring Data JPA"规范进行单元测试方法

Android Webview 使用自签名证书

基本计时器上的 Java IllegalThreadStateException

android - 具有多个类元素的 native Android 移动应用程序测试自动机导航

java - android 写入文件的位置

java - 使用 AbstractTableModel 时不显示列名称

java - 缓存键组织问题

python - Scipy 最小化 fmin - 语法问题

java - instanceof 运算符会产生大量开销吗?为什么?

c++ - 在 OpenCV 中将 alpha channel 应用于图像的最快方法