我遇到基本代码问题,该代码在屏幕上的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空间中显示数千个多边形。怎么样?
答案 0 :(得分:3)
问题在于你正在使用CPU(以及通过低效的内存访问方法)来完成GPU更好的工作。
你需要使用像2D图形或游戏库或类似的东西来获得你想要的那种性能。
答案 1 :(得分:0)
问题是,在开发游戏时,你应该非常关心优化。如果你不需要它,你不能简单地调用一个paint方法,希望一切都会好的。
除此之外,您应该尝试寻找专用于图形的库(如OpenGL),因为它们可以使用硬件轻松处理优化。