So I'm using Love2D which uses SDL2* as far as I'm aware and I have a question about texture atlases & spritebatching.
I have an isometric chunk, with 2 layers, terrain and objects (trees, buildings, units). The terrain is not animated and the tiles are 32x16, they fit perfectly even in a 1028x1028 texture atlas.
However the object spritebatch\layer is a different thing. I have trees, that are animated and each frame uses up to 200x200 space in the atlas. You can see the problem. Now, I think I can fit all of it in a 8192x8192 texture and this is OK for my GPU, which is entry level (GT 720). It gets stored in the VRAM.
So I conducted some test and imported a 10k x 10k image, the GPU could not handle it, and it was loaded onto the RAM. What exactly happens here? How much is the performance loss, I'm about to test, but is this going to cause any incompatibility problems? Other than the 300MB RAM usage instead of VRAM.
Now, you might state the obvious, "Why not use 2 or more texture atlases?".
I don't know if I'm doing things wrong, but I want to use sprite batches for the object layer, and the way I'm drawing it is this:
function update_objects() object_batch:clear(); for i=0,chunk_width-1,1 do for o=0,chunk_height-1,1 do object_batch:add( tile_quads[objects_chunk[i][o]], (i - o) * tile_width * 0.5, (i + o) * tile_height * 0.5 - tile_offset[objects_chunk[i][o]]); end end object_batch:flush() end
In order to deal with the depth issue that isometric games have, I simply draw furthest to closest. As far as I'm aware, sprite batches can only use 1 texture atlas, and I confirmed that by tests.
Of course, there's a draw call that draws the sprite batch. I'm ok with several draw calls (units, buildings, environment in 3 separate batches for example), but I don't see how I will deal with the depth issue if I do go that way.
*(not OpenGL as I previously stated)