2014-09-28 86 views
2

我剛剛寫了康威的Java遊戲生活,我想在我的android手機(Nexus 4)上測試我的應用程序。 爲了測試,我在我的SpriteBatch上繪製了一個BitmapFont,向我展示了FPS,陀螺儀,活細胞和其他數據。 在PC上,我有〜500到4000 FPS,這取決於我的GOL邏輯工作的速度。但是,如果我在Android上啓動它,FPS將降至10-15。如果我用幾乎全速的GOL邏輯關閉我的ShapeRenderer(這是我的主要類渲染所有GOL-Rectangles),FPS始終在60(我猜你不能關閉Nexus上的VSync 4)。LibGDX - ShapeRenderer太慢/ Android上的低FPS

所以,這裏是我的問題: 爲什麼ShapeRenderer如此高效率?我還應該使用什麼來呈現我的形狀?

我會後我的(很簡單)渲染代碼和圖片:

 this.setColor(new Color(1, 0, 0, 1)); 
    for (int i = 0; i < grid.getX_length(); i++) { 
     for (int j = 0; j < grid.getY_length(); j++) { 


       if (cells[i][j].getState()){ // checks if the cell is dead or alive 
        this.setColor(new Color (0,0,0,1)); 
        rect(i * size, j * size, size-gap, size-gap); // draws it. 
       } 

http://s14.directupload.net/images/140929/qc3uu8ew.png

+2

我有我的Android手機上使用ShapeRenderer沒有問題。你可以使用SpriteBatch.draw()渲染一個小的PNG紋理,而不是在每一幀上重新生成矩形?我不確定哪種效率更高,但值得一試。 – 2014-09-29 01:30:47

+2

首先,不要每幀創建一個新的Color對象大約一百萬次。只需將顏色保存在一個變量中,您就可以輕鬆完成任務。否則你會有很多垃圾收集,這會降低性能。而且,你在RAM中創建了大量的對象,這也會降低性能。我不認爲這是問題,但它已經有機會了。向我們展示全班。也許thtat有幫助。 – BennX 2014-09-29 15:30:45

+0

感謝你們倆。我現在繪製小的.png,並使用Color變量。在Android上,我終於有60 FPS,在我的PC上FPS-Rate增加了50-100%。 – 2014-09-29 23:02:45

回答