[英]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.