Reputation: 9357
@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();
}
Here is what I get when launching the desktop version :
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)
I've tried both this tuto and this one, and I get the same error at the same line mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);
.
EDIT : I just noticed that the data of my .tmx file was automatically encoded by Tiled Map Editor, so I just desactivated it, but still get the same error.
If I copy/paste this project (I mean the whole project, not only the render() method) it works but when I try to load my own map in my own project it just crashes ...
So after that I decided to simplify my render()
method by just doing like the link I gave before and by using the TiledMapHelper class
the author provide, so there is my render()
method now:
mHelper.getCamera().update();
mHelper.render();
Still crashiiiiiiiiiiiiiingg.....
If someone can please provide some help it would be greatly appreciated because atm i'm really going mad !
Upvotes: 7
Views: 4299
Reputation: 9357
I found what caused the error :
Currently my screen is black so I think no tile is draw (probably because I gave random indexes to the tiles in the packfile - fixed, see the end of the post) but no exceptions are thrown and that's the point.
Those mistakes are due to the program I used to pack the tiles that was supposed to make me win time lol. So I will try different options or use something else.
If you want to know the program was "TexturePacker GUI" v3.1.0.
If you know what options I should/not use to avoid errors please let me know.
EDIT : Found a usefull and working tool for packing tiles, here it is : http://freigabe.philweb.de/bubblr/texturepacker_edited.jar
(link is dead ; use this one instead. or another packing tool)
To use it open cmd and go to the directory where your downloaded the .jar file and then :
//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
Here is dpk's tutorial I mentioned, just follow from here : http://dpk.net/2011/05/01/libgdx-box2d-tiled-maps-full-working-example-part-1/#p4
If application doesn't crashes but the screen is black, just increase camera's viewport's width & height.
Happy mapping :) !
Upvotes: 9