【发布时间】:2012-11-18 07:04:12
【问题描述】:
我有一些代码可以在随机位置生成粒子,并以随机方向和速度移动。
循环中的每次迭代,我都会移动所有粒子,并在我的 jpanel 上调用 repaint。
对于 1,000 个粒子,我的速度约为每秒 20 到 30 帧。我计划最终拥有 100,000 到 1,000,000 个粒子。
在绘画中,我只在窗口大小改变时创建一个新的缓冲图像。我将像素绘制到bufferedimage,然后调用drawImage来显示图像。
每个粒子都是一个像素,我已经确定所有时间都用于实际绘制像素。因此,增加粒子数量会大大降低帧速率。
我试过g.drawline(x,y,x+1,y),img.setRGB(x,y,color),通过调用img.getRaster().getDataBuffer()得到一个像素数组。 getData(),然后设置pixelData[y*width+x] = color。
通过这些不同的像素绘制方式,我在帧速率上只得到了很小的差异。
这是我的问题:绘制像素最快的方法是什么? bufferedimage 是否可行?
谢谢。
【问题讨论】:
-
虽然可能与您的想法略有不同,但您可能想尝试一些 GPU 编程技术。您可以阅读here,了解使用 OpenCL 改编的百万粒子示例。
标签: java performance pixel bufferedimage