@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();
}
Hier ist, was ich bekomme, wenn die Desktop-Version starten:Libgdx - Anwendung stürzt ab, wenn Aufruf TiledMapRenderer.render()
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)
Ich habe versucht, sowohl this tuto und this one, und ich bekomme den gleichen Fehler in der gleichen Zeile mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);
.
EDIT: Ich habe gerade festgestellt, dass die Daten meiner .tmx-Datei wurde automatisch von Tiled Map Editor codiert, so dass ich es deaktiviert, aber immer noch den gleichen Fehler.
Wenn ich Kopieren/Einfügen this project (ich meine das ganze Projekt, nicht nur die render() Methode) es funktioniert, aber wenn ich versuche, meine eigene Karte in meinem eigenen Projekt zu laden, stürzt nur ...
So danach habe ich beschlossen, nur um zu tun, wie die Verbindung meiner render()
Methode zur Vereinfachung habe ich vor und nach den TiledMapHelper class
den Urheber verwenden, so dass es mein render()
Methode jetzt:
mHelper.getCamera().update();
mHelper.render();
Noch crashiiiiiiiiiiiiiingg .....
Wenn jemand bitte helfen kann, wäre es gr Ich bin sehr dankbar, weil ich total verrückt bin!
Ich habe eine ähnliche Ausnahme gesehen, wenn ich meine Netzdefinitionen durcheinander gebracht habe (entweder habe ich vergessen, die Vertices zu laden oder die Länge auf Null zu setzen). Es ist also höchstwahrscheinlich etwas falsch mit Ihrer Kachelkartendefinition. Überprüfen Sie, ob Größen-/Skalierungsanforderungen (wie Potenz 2 oder Minimum von X oder ähnlichem), die Sie nicht erfüllen, bestehen. –
Danke für deine Antwort. Ich überprüfte einfach alles bei einer Zweierpotenz: das Darstellungsfeld der Kamera, die Größe jeder Kachel und die Größe meiner level.png, die alle Kacheln in einem Bild enthält. Nur die Kartengröße passte nicht, aber das Ändern hat mein Problem nicht gelöst. Wie auch immer, das Tutorial verwendet eine Karte von 60 * 15, so dass die Karte, die angezeigt wird, auch nicht. – Flawyte