1
在使用Slick 2D API的Java中,我构建了一个将位图作为其世界的游戏。如果位图的像素的alpha值为0,则认为该字符可以自由漫游;否则,它是坚实的,他们不能通过。Java平滑2D获得图像像素缓慢,任何优化?
在我的电脑上,我以CPU使用率的1%运行它。然后,当我尝试在我的笔记本电脑上运行它时,它的内核已达到峰值,并在CPU使用率的50%处运行。
经过测试,我发现扩展函数调用获取图像的像素Image.getColor(x, y)
。这是有趣的部分。我使用Allegro 5在C++中重建了这个相同的例子,在我的笔记本电脑上,它的运行速度是3%而不是50%。
是否有更有效的方法从光滑2D中的图像获取像素?
似乎没有简单的函数从图像获取ImageBuffer。我将不得不手动获取像素,并填充我的ImageBuffer,但这样做会使数百个getPixel调用,然后我现在正在做,因为我只有每帧调用3次。我需要这样做,因为在游戏过程中,可以通过绘制来修改世界,然后在已绘制的地形上行走。 – Johnathan
@Johnathan:那么Slick 2D就是llaammee。如果你想操纵Java中的像素,* only *高效的方法是直接操作每个像素为ARGB * int *。其他任何事情都是自杀。在OS X上* getRGB *可以高达**三个数量级**(这是正确的,1 000倍)比直接从后台读取该值* int [] *:在Mac Mini上测量。疯狂:( – SyntaxT3rr0r
)感谢您的信息,我只是会忘记制作这样一个引擎,听起来像是太麻烦了,我仍然想知道他们是如何在跨平台的Wormux中实现的。 – Johnathan