2012-07-31 36 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(); 
} 

Esto es lo que pasa cuando el lanzamiento de la versión de escritorio:libgdx - aplicación se bloquea cuando TiledMapRenderer.render llamada()

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) 

He intentado tanto this tuto y this one, y me sale el mismo error en la misma línea mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);.

EDIT: Acabo de notar que los datos de mi archivo .tmx fueron codificados automáticamente por Tiled Map Editor, por lo que acabo de desactivarlos, pero sigo recibiendo el mismo error.
Si copiar/pegar this project (me refiero a todo el proyecto, no sólo el método render()) funciona, pero cuando intento cargar mi propio mapa en mi propio proyecto sólo se estrella ...

Así después de eso decidí simplificar mi método render() con sólo hacer como el enlace que he dado antes y mediante el uso de la TiledMapHelper class el autor proporciona, por lo que no es mi método render() ahora:

mHelper.getCamera().update(); 
mHelper.render(); 

Aún crashiiiiiiiiiiiiiingg .....
Si alguien puede por favor proporcionar algo de ayuda, sería gr ¡Lo aprecio mucho porque en realidad me estoy volviendo loco!

+0

He visto una excepción similar cuando he alterado mis definiciones de malla (olvidando cargar vértices o estableciendo la longitud en cero). Por lo tanto, lo más probable es que algo sea incorrecto con la definición del mapa de mosaico. Verifique si hay requisitos de tamaño/escala (como potencia de 2 o un mínimo de X, o algo así) que no cumple. –

+0

Gracias por su respuesta. Acabo de comprobar y todo con una potencia de 2: la ventana gráfica de la cámara, el tamaño de cada azulejo y el tamaño de mi level.png que contiene todas las fichas empacadas en una imagen. Solo el tamaño del mapa no encajaba, pero cambiarlo no resolvió mi problema, de todos modos el tutorial usa un mapa de 60 * 15, por lo que el mapa que se muestra tampoco. – Flawyte

Respuesta

8

He encontrado la causa del error:
1) todas las fichas en mi "PACKFILE" -1 tenido como su índice de
2) todas las fichas en mi "PACKFILE" tenía el mismo nombre que su archivo de baldosas originales nombre, pero no el mismo nombre que el archivo .png que contiene todas las fichas empacadas.

Actualmente mi pantalla es negro así que creo que hay azulejo es dibujar (probablemente porque di índices aleatorios para los azulejos de la PACKFILE - , ver las diferentes final del post), pero no se lanzan excepciones y esa es la punto.

Esos errores se deben al programa que utilicé para empacar las fichas que se suponía me harían ganar tiempo jajaja. Entonces probaré diferentes opciones o usaré otra cosa.
Si desea saber si el programa era "GUI de TexturePacker" v3.1.0.

Si sabe qué opciones debo/no debo utilizar para evitar errores, por favor hágamelo saber.

EDIT: encontrado una muy útil y herramienta de trabajo para los azulejos de embalaje, aquí está: http://freigabe.philweb.de/bubblr/texturepacker_edited.jar (enlace está muerto, el uso de éste en vez =>http://bit.ly/1a831nv u otra herramienta de embalaje =>http://bit.ly/1aLgAFt)

para usarlo abrir cmd y vaya al directorio en su descargado el archivo .jar y luego:

//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 

aquí está el tutorial de dpk he mencionado, sólo tienes que seguir desde aquí: http://dpk.net/2011/05/01/libgdx-box2d-tiled-maps-full-working-example-part-1/#p4

Si la aplicación no se bloquea pero la pantalla es negra, simplemente aumente el ancho de la ventana de la cámara & de alto.

Happy mapping :)!

+0

muchas gracias, hago los mismos errores –

+0

También utilicé la "GUI de TexturePacker" y encontré el mismo problema. Gracias por proporcionar la alternativa! –

+0

El enlace @miNde está muerto – tsukimi

Cuestiones relacionadas