2012-07-31 6 views
6
@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!

+0

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. –

+0

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

risposta

8

ho trovato la causa dell'errore:
1) tutte le tessere del mio "packfile" ha avuto -1 come loro indice
2) tutte le tessere del mio "packfile" ha avuto lo stesso nome del loro file di pavimenti originali in piastrelle nome, ma non lo stesso nome del file .png contenente tutte le tessere impacchettate.

Attualmente il mio schermo è nero quindi penso che nessuna tessera è disegno (probabilmente perché ho dato indici casuali per le piastrelle in packfile - fissi, vedo la fine del post), ma senza eccezioni sono gettati e questo è il punto.

Questi errori sono dovuti al programma che ho usato per imballare le tessere che avrebbero dovuto farmi guadagnare tempo lol. Quindi proverò diverse opzioni o userò qualcos'altro.
Se si desidera sapere che il programma era "TexturePacker GUI" v3.1.0.

Se si conosce quali opzioni dovrei/non utilizzare per evitare errori, fatemelo sapere.

EDIT: Trovato uno strumento di lavoro utile e per piastrelle di imballaggio, eccolo: http://freigabe.philweb.de/bubblr/texturepacker_edited.jar (link è morto; utilizzare questa invece =>http://bit.ly/1a831nv o un altro strumento di imballaggio =>http://bit.ly/1aLgAFt)

per usarlo aprire cmd e passare alla directory in cui il tuo stato scaricato il file .jar e poi:

//You should create, in the same directory of the .jar file, two additionnal folders 
//Call the first folder 'input' and put in all your tiles (rename them "level_1.png", "level_..") 
//Call the 2nd folder 'output' and leave it empty 
//Then just type in the command prompt : java -jar nameOfDownloadedJarFile.jar input output level 
//Then rename the "input1.png" into "level.png", and "level.pack" into "level packfile" 
//Open "level packfile" with notepad and change "input1.png" into "level.png" 
//Then draw your map using "level.png" in TiledMapEditor 
//Then just follow dpk' tutorial for rendering the map and it should work 

Ecco il tutorial di dpk ho già detto, basta seguire da qui: http://dpk.net/2011/05/01/libgdx-box2d-tiled-maps-full-working-example-part-1/#p4

Se l'applicazione non si arresta in modo anomalo ma lo schermo è nero, è sufficiente aumentare la larghezza della finestra della vista &.

mappatura Felice :)!

+0

grazie molto, faccio stessi errori –

+0

ho usato anche il "TexturePacker GUI" e incontrato lo stesso problema. Grazie per aver fornito l'alternativa! –

+0

collegamento @miNde è morto – tsukimi

Problemi correlati