そのため、libgdx プロジェクトでパフォーマンスの問題が発生し、マップのレンダリングまで追跡しました。空のプロジェクトを作成することで問題を分離し、マップのレンダリングだけをできるだけ少なくしました。これは私が思いついたコードです:
デスクトップ起動プロジェクト クラス:
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 を超えるレンダリングが必要になると、CPU 使用率が急上昇します。129 タイル未満では、パフォーマンスは常に同じです。( この処理だけで 2~4% かかります ) しかし、129 個以上のタイルをレンダリングすると 40~60% かかります! 今私の質問は:それはなぜですか?私は何か間違ったことをしていますか?libgdx のレンダラーにこのような致命的な欠陥があるとは想像できません...そして、画面上で 128 個のタイルのみを使用してゲームを作成することは選択肢ではありません :)
答えや考えをありがとう!
環境:
- Eclipse ケプラー サービス リリース 1
- libgdx バージョン 0.9.9
- ウィンドウズ7
- グラフィックチップ: NVIDIA GeForce GTX 560 Ti
- CPU: Pentium デュアルコア 2.70GHz
128 タイルのレンダリング:
129 タイルのレンダリング: