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