如何使循环更有效?

时间:2014-07-22 12:27:06

标签: java

我遇到基本代码问题,该代码在屏幕上的150x150网格中显示一些动画图像。 (注意:是的我知道图像离开了屏幕的边缘,但最后我计划根据需要缩放图像以适应屏幕)。但是,该程序仅以2 FPS运行,导致动画有时无效。我的循环目前如下(在Java中):

for (int i = 0; i < 22; i++) {
    for (int j = 0; j < 11; j++) {
        g2d.drawImage(getImage(texture_Ocean,l),i*64,j*64,i*64+64,j*64+64,0,0,64,64,this);
    }
}

getImage:

public Image getImage(Image i, Long l) {
    BufferedImage b = (BufferedImage) i;
    int w = b.getWidth();
    if (b.getHeight() % w == 0) {
        int frames = b.getHeight()/w;
        int frame = Math.round((l%1000)/(1000/frames));
        System.out.println(frame);
        return b.getSubimage(0,(int) (w*frame) ,w, w);
    } else {
        return texture_error;
    }
}

我的问题是如何让我的程序更高效/更快地运行?我知道必须有一种方法可以做到这一点,因为你看到像监狱建筑师和rimworld这样的游戏,其中的单词是300x300并且有实体的hundreads。和TF2这样的游戏在3D空间中显示数千个多边形。怎么样?

2 个答案:

答案 0 :(得分:3)

问题在于你正在使用CPU(以及通过低效的内存访问方法)来完成GPU更好的工作。

你需要使用像2D图形或游戏库或类似的东西来获得你想要的那种性能。

答案 1 :(得分:0)

问题是,在开发游戏时,你应该非常关心优化。如果你不需要它,你不能简单地调用一个paint方法,希望一切都会好的。

除此之外,您应该尝试寻找专用于图形的库(如OpenGL),因为它们可以使用硬件轻松处理优化。