簡體   English   中英

幀率/性能隨時間下降

[英]Frame-Rate / Performance drops over time

我正在創建一個簡單的寵物模擬器,這是我為任務創建的第一個項目。 大部分功能都可以正常工作,由於我在制定項目方面做得更好,因此我對其進行了很多次重寫,但是在添加計時器時卻遇到了麻煩。

運行該項目后,我的游戲似乎運行良好,正在渲染圖像(也許不是最有效的),並且我的計時器/ FPS計數器運行良好。 但是,自從我添加了此計時/ FPS代碼以來,它在FPS中的運行速度越來越慢,然后凍結並崩潰。

我遵循了Ninja Cave的LWJGL時序教程。 http://ninjacave.com/lwjglbasics4

這是我的源代碼,並非包括所有類,因為有很多類,但是如果需要的話也可以。 我試着只包括針對渲染的內容。

主類http://pastebin.com/BpkHHnnj

渲染類http://pastebin.com/QtJeYw1a

紋理加載程序類http://pastebin.com/RX5iDXQm

主要游戲狀態類http://pastebin.com/pvgDLkeM

寵物課http://pastebin.com/VF6cq9S4

謝謝

我目前正在解決您的問題,但是您的renderer.readyTexture()突然失控了,本質上是在浪費內存,而且速度很快 ,這說明速度下降。

編輯 :我得到穩定的內存使用情況。

添加public Map<String, Texture> loadedTextures = new HashMap<String, Texture>(); 到render.java中的renderer類,並將renderer.readyTexture()方法更改為此:

    public void readyTexture(String textureDir){
        if (!loadedTextures.containsKey(textureDir) || loadedTextures.get(textureDir) == null) {
            texture = lt.loadTexture(textureDir);
            loadedTextures.put(textureDir, texture);
        } else {
            texture = loadedTextures.get(textureDir);
        }

        textureDirString = textureDir;
        texture.bind();
        texLoaded = true;
        System.out.println("Loaded: " + textureDirString);
    }

現在有了代碼, Map/HashMap將存儲已加載的紋理。 renderer.readyTexture()方法中,我讓它檢查Map是否不包含關鍵的textureDir ,如果存在,則檢查其是否為null。 如果該條目不在Map或包含的Texturenull ,則我們加載紋理並將其存儲在Map中。 如果存儲了紋理,則將其從Map拉出並綁定。

以前,您每次都加載圖像,而垃圾收集器沒有刪除它,這可能是Slick的問題,但是如果正確緩存所有內容,它就可以正常工作。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM