So I am learning 3D programming for 3 days now. I managed how to use VBOs, culling and other things.
I store level data in chunks (16 x 16 x 16). I am generating a VBO for every chunk (not for every tile), i get rid of “unseen” faces of cubes.
If I simulate (using 25 chunks) the updating (recalculation of VBO) of all the chunks every 2 seconds, the application’s emory use gets >500m in lass than 10 seconds.
I think that the bottleneck is my float[] declaration (the data passed to the FloatBuffer); i am declaring it as 16^3 * 6 (faces) * 4 (vertex per face) * 3 (x, y, z).
As solution, i found using an ArrayList (so i can have dynamic size) significantly reduces the memory use, but i get very wierd results, apart from OpenGL errors that are making my app to start only sometimes :
NORMAL (HOW IT SHOULD BE)
WEIRD
Here are my Chunk classes (first is the one with float[], and second is the one with ArrayList):
http://pastebin.java-gaming.org/d2fb87c055b
http://pastebin.java-gaming.org/2fb8c850b58
LE: Also, another issue i have is that when the (0, 0, 0) point is in screen (view), my framerate drops to 15-20 FPS, it doesn’t matter if i have or not any block at (0, 0, 0).