Here I am again with yet another question. Can you pre-render display lists without lagging the game? Like if you get into a new region of a map, it loads the new “regions” of the world and pre-renders them in display lists, maybe in another thread? I thought of doing it in the loop in the time that is usually waited for the Display to sync to like 60 fps, but that’d require me to continue a display list. Is there a call for that, like GL11.glLoadList(listid); or something similar? Thanks in advance.
Map data isn’t something you should conflate with visual data. Visual representations are something you’re going to update every time you move as you do visibility culling. A display list is already stored on the driver side, that’s the whole point of them (actually they may be stored there, only a VBO will guarantee it).
Loading map data in a background thread is fine, you’d just better understand multithreading first, because doing it wrong will just make your program slower and less reliable. Multithreaded rendering , with different threads all doing graphical work, is a seriously advanced topic, with very finicky requirements per gpu/driver-version/OS combination. At this point, you’d be better off to just forget about multithreaded rendering entirely.
You can’t render from multiple threads, even into display lists. DirectX 11 can do that, but it’s slower than just using a single thread due to drivers (on both vendors).
I wouldn’t worry much about performance in your case. Just make the chunks small enough, and there won’t even be a dent in the FPS when a new chunk is loaded. Try to aim for 16x16 chunks.
Thanks for your answer! Well, making the chunks small enough does work for this project, since I’m using a heightmap, but for my 3D-Cube-World, it lags the game down once in a while. What I’ll try now is doing the loading in the free time between the render loop and the next execution of it.