0
所以我有我的libgdx項目的性能問題,我跟蹤到地圖渲染。 我通過創建一個空項目來隔離問題,並儘可能少地執行地圖渲染。這是我想出了代碼:libgdx TiledMap渲染性能問題
桌面啓動項目類:
package com.me.test;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
public class Main {
public static void main(String[] args) {
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
cfg.title = "performanceTest";
cfg.useGL20 = false; // doesn't make a difference...
cfg.width = 1080;
cfg.height = cfg.width/12 * 9; // 810
new LwjglApplication(new Test(), cfg);
}
}
的實際代碼:
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
public class Test implements ApplicationListener {
private OrthographicCamera camera;
private com.badlogic.gdx.maps.tiled.TiledMap map;
private static OrthogonalTiledMapRenderer renderer;
@Override
public void create() {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera(w, h);
TmxMapLoader maploader = new TmxMapLoader();
map = maploader.load("test.tmx");
renderer = new OrthogonalTiledMapRenderer(map, 1);
renderer.setView(camera);
}
@Override
public void dispose() {
renderer.dispose();
map.dispose();
}
@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
renderer.render();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
現在奇怪的是:不僅是CPU的使用率可笑的高,但它超過128必須呈現時跳。低於129瓦的表現總是相同的。 (只有這個過程需要大約2-4%)但是渲染129塊或更多的塊大約需要40-60%! 現在我的問題是:爲什麼呢?難道我做錯了什麼? 我無法想象從libgdx的渲染器會有這樣一個致命的缺陷......並製作一個遊戲只使用128瓦在屏幕上是不是一個選項:)
感謝您的任何答案或想法!
環境:
- Eclipse的開普勒服務發佈1
- libgdx版本0.9.9
- Windows 7的
- 顯卡芯片:NVIDIA的GeForce GTX 560鈦
- CPU:奔騰雙核2.70GHz
Rendering 128 Tiles:
渲染129瓦:
我想知道這一點。我目前正在渲染40x30Tiles x 5層= 6000Tiles,沒有任何性能問題。但是,你真的有一個性能問題或只是在CPU的上升?無論如何,FPS下降了嗎?添加一個FPS記錄器,看看它是否仍然是一個問題。一個瓷磚組中的所有瓷磚都是?如果不這樣做。由於您具有紋理綁定,它們不應該位於不同的圖塊中。由於Map是多行1行,並且整行得到迭代,所以它確實需要更多的性能。爲什麼它如此大的差異我不知道。如果可能的話,也許上傳tmx +資產來檢查它。 – BennX
呃...問題是,雖然我的電腦上有60 FPS的甜蜜,但我的筆記本電腦上有20個...我不會爲CPU而煩惱,但我認爲CPU不需要這麼努力。是的。我有一個32×32的tileset有16×16瓦 – pixlhero
對資產裝載機沒想好......會嘗試一下 – pixlhero