@Override
public void render(float delta) {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
sprite.setProjectionMatrix(camera.combined);
mLevel.getTiledMapRenderer().getProjectionMatrix().set(camera.combined);
Vector3 tmp = new Vector3();
tmp.set(0, 0, 0);
camera.unproject(tmp);
mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);
sprite.begin();
...
sprite.end();
}
Oto co otrzymuję przy uruchamianiu wersji Desktop:libgdx - awarie aplikacji gdy TiledMapRenderer.render wezwanie()
Exception in thread "LWJGL Application" java.lang.IllegalArgumentException: Number of remaining buffer elements is 0, must be at least 1. Because at most 1 elements can be returned, a buffer with at least 1 elements is required, regardless of actual returned element count
at org.lwjgl.BufferChecks.throwBufferSizeException(BufferChecks.java:162)
at org.lwjgl.BufferChecks.checkBufferSize(BufferChecks.java:189)
at org.lwjgl.BufferChecks.checkBuffer(BufferChecks.java:230)
at org.lwjgl.opengl.GL15.glBufferData(GL15.java:141)
at com.badlogic.gdx.backends.lwjgl.LwjglGL20.glBufferData(LwjglGL20.java:93)
at com.badlogic.gdx.graphics.glutils.VertexBufferObject.bind(VertexBufferObject.java:208)
at com.badlogic.gdx.graphics.Mesh.bind(Mesh.java:268)
at com.badlogic.gdx.graphics.g2d.SpriteCache.begin(SpriteCache.java:868)
at com.badlogic.gdx.graphics.g2d.tiled.TileMapRenderer.render(TileMapRenderer.java:336)
at com.badlogic.gdx.graphics.g2d.tiled.TileMapRenderer.render(TileMapRenderer.java:286)
at com.crunsh.libgdx.screens.GameScreen.render(GameScreen.java:102)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:202)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:131)
Próbowałem zarówno this tuto i this one i uzyskać ten sam błąd w tej samej linii mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);
.
EDIT: Właśnie zauważyłem, że dane z mojego pliku .tmx została automatycznie kodowane przez Kafelkowanie edytor map, więc po prostu dezaktywowany, ale wciąż ten sam błąd.
Gdybym skopiuj/wklej this project (mam na myśli cały projekt, nie tylko metody() render) działa, ale gdy próbuję załadować własną mapę w moim projekcie po prostu wywala ...
Tak potem postanowiłem uprościć moją metodę render()
po prostu robi jak link dałem przed i za pomocą TiledMapHelper class
autor zapewnić, więc nie jest moja metoda render()
teraz:
mHelper.getCamera().update();
mHelper.render();
Wciąż crashiiiiiiiiiiiiiingg .....
Jeśli ktoś może udzielić pomocy, będzie to gr bardzo doceniany, bo naprawdę jestem wściekły!
Widziałem podobny wyjątek, gdy pomieszałem moje definicje siatki (albo zapomniałem załadować vertice, albo ustawić długość na zero). Najprawdopodobniej coś jest nie tak z definicją mapy kafelka. Sprawdź, czy istnieją wymagania dotyczące rozmiaru/skali (takie jak moc 2 lub minimum X lub coś podobnego), których nie spotykasz. –
Dzięki za odpowiedź. Właśnie sprawdziłem i wszystko, co ma moc 2: widok kamery, rozmiar każdej płytki i rozmiar mojego level.png zawierający wszystkie kafelki zapakowane w jeden obraz. Tylko rozmiar mapy nie pasował, ale zmiana go nie rozwiązała mojego problemu, w każdym razie samouczek używa mapy 60 * 15, więc mapa, która się wyświetla, też nie. – Flawyte