簡體   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