@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();
}
Ecco quello che ho al momento del lancio della versione desktop:LibGDX - crash dell'applicazione quando la chiamata 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)
Ho provato sia this tuto e this one, e ottengo lo stesso errore alla stessa riga mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);
.
MODIFICA: Ho appena notato che i dati del mio file .tmx sono stati automaticamente codificati da Tiled Map Editor, quindi l'ho appena disattivato, ma ho ancora lo stesso errore.
Se copio/incolla this project (intendo l'intero progetto, non solo il metodo() rendering) funziona, ma quando provo a caricare la mia carta nel mio progetto solo blocca ...
Così dopo che ho deciso di semplificare il mio metodo render()
da solo facendo come il link che ho dato prima e utilizzando la TiledMapHelper class
l'autore fornisce, quindi non è il mio metodo render()
ora:
mHelper.getCamera().update();
mHelper.render();
Ancora crashiiiiiiiiiiiiiingg .....
Se qualcuno può fornire qualche aiuto sarebbe gr apprezzato molto perché atm sto davvero impazzendo!
ho visto un'eccezione simile quando ho incasinato le mie definizioni di maglia (o dimenticare di caricare verticies o impostando la lunghezza a zero). Quindi, molto probabilmente qualcosa non è corretto con la definizione della mappa di tile. Controlla se ci sono requisiti di dimensioni/scala (come la potenza di 2 o minimo di X, o qualcosa del genere) che non stai incontrando. –
Grazie per la risposta. Ho appena controllato e tutto se una potenza di 2: il viewport della fotocamera, la dimensione di ogni piastrella e la dimensione del mio level.png contenente tutte le tessere confezionate in un'unica immagine. Solo la dimensione della mappa non andava bene, ma cambiarla non ha risolto il mio problema, comunque il tutorial usa una mappa di 60 * 15 quindi la mappa che mostra non lo è neanche. – Flawyte