@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();
}
Dưới đây là những gì tôi nhận được khi tung ra phiên bản máy tính để bàn:LibGDX - Ứng dụng bị treo khi gọi 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)
Tôi đã thử cả hai this tuto và this one, và tôi nhận được lỗi tương tự tại cùng một dòng mLevel.getTiledMapRenderer().render(tmp.x, tmp.y, camera.viewportWidth, camera.viewportHeight);
.
CHỈNH SỬA: Tôi vừa nhận thấy rằng dữ liệu tệp .tmx của tôi được mã hóa tự động biên soạn bởi Tiled Map Editor, vì vậy tôi chỉ hủy kích hoạt nó, nhưng vẫn gặp lỗi tương tự.
Nếu tôi sao chép/dán this project (Tôi có nghĩa là toàn bộ dự án, không chỉ render() phương pháp) nó hoạt động nhưng khi tôi cố gắng để tải bản đồ của riêng tôi trong dự án của riêng tôi nó chỉ bị treo ...
Vì vậy, sau đó tôi đã quyết định để đơn giản hóa phương pháp render()
tôi bởi chỉ cần làm như liên kết tôi đưa cho trước và bằng TiledMapHelper class
tác giả cung cấp, do đó phương pháp render()
của tôi bây giờ:
mHelper.getCamera().update();
mHelper.render();
Tuy crashiiiiiiiiiiiiiingg .....
Nếu ai đó có thể vui lòng cung cấp một số trợ giúp, nó sẽ là gr ăn ngon bởi vì tôi thực sự phát điên!
Tôi đã nhìn thấy một ngoại lệ tương tự khi tôi đã sai lầm định nghĩa lưới của tôi (hoặc quên để tải verticies hoặc thiết lập chiều dài bằng không). Vì vậy, rất có thể điều gì đó không chính xác với định nghĩa bản đồ của bạn. Kiểm tra xem có yêu cầu về kích thước/quy mô không (giống như sức mạnh của 2 hoặc tối thiểu X hoặc thứ gì đó tương tự) mà bạn không đáp ứng. –
Cảm ơn câu trả lời của bạn. Tôi chỉ cần kiểm tra và tất cả mọi thứ nếu một sức mạnh của 2: các viewport của máy ảnh, kích thước của mỗi ngói và kích thước của level.png của tôi có chứa tất cả các gạch đóng gói trong một hình ảnh. Chỉ có kích thước bản đồ không phù hợp, nhưng việc thay đổi nó không giải quyết được vấn đề của tôi, dù sao hướng dẫn sử dụng bản đồ 60 * 15 để bản đồ hiển thị cũng không. – Flawyte