如何加速我的Java游戏的FPS?

时间:2011-10-12 22:53:37

标签: java optimization frame-rate

我正在制作一款Java游戏,当我绘制图形时,游戏就会落后很多。 我目前绘制图形的方法是制作BufferedImage,从中获取Graphics2D,然后做一大堆:

g2d.drawImage(loadedImages.getImage(),x,y,null);

将所有图像打印到BufferedImage后,我将BufferedImage绘制到屏幕上。

我向BufferedImage绘制了很多图像。有没有更好的方法来加快绘画时间? 我对图形和图形卡知之甚少。我应该使用显卡吗?我应该直接在屏幕上画画吗?我应该使用与drawImage()完全不同的东西吗?

2 个答案:

答案 0 :(得分:3)

如果您正在绘制合理数量的图像,性能应该很好。

确保每次绘制到屏幕时都不会创建新的BufferedImage。例如,您可能需要Resources singleton来管理所有图片,以便只加载和卸载一次图像。


如果您真的想要更高的性能,那么您将需要使用OpenGL。请参阅LWJGLlibgdxJOGL。您可能还需要考虑像Slick这样的2D图形库。

答案 1 :(得分:1)

我发现扩展java.awt.Canvas并使用

很有用
draw()

然后实际的void draw() { Graphics g = bs.getDrawGraphics(); g.drawImage(image, x, y, w, h, null); // Draw more things here... // You can also make calls like `myObject.draw(g)` and whatever // you draw onto `g` within those calls will show up. bs.show(); g.dispose(); } 方法看起来像

myObject.draw(g)

这是我用来绘制很多东西的东西。然后在每个draw()调用中,有时会有多个其他类似的调用被链接起来。通常,我的主for方法中有一个或两个for(Entity e: entities) e.draw(g);循环,只需说{{1}}或类似的东西。然后整个绘图链从那里开始。