繁体   English   中英

如何使循环更有效?

[英]How to make loops more efficient?

我遇到基本代码的问题,它在屏幕上的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空间中显示数千个多边形。 怎么样?

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

您需要使用像2D图形或游戏库或类似的东西来获得您正在寻找的那种性能。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM