I've provided some pseudo-code here on what it does.
I would like to here some opinions about it and if you think its a good way to keep going with it or if taking the wrong approach, maybe if
you can see anything that would become problems.
Im using opengl for rendering so vtx_buffer here is just a big block of memory allocated on the stack as a big float array, that's sent to opengl via glBufferData.
The CreateQuad just assigns values to 36 vertices (1 quad) and then advances a vtx_marker to next "quad start"
in the vtx_buffer.
Every fram it resets the vtx_marker to the beginning of where the marker was just before the game-loop starts.
thanks!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | struct mem { vtx_buffer; vtx_marker; vtx_marker_after_init; } q (quad) = 36 vtx's vtx_marker | V vtx_buffer |---------------------------| vtx_marker | V q1 = CreateQuad |--q1--|--------------------| vtx_marker | V q2 = CreateQuad |--q1--|--q2--|-------------| mem.vtx_marker_after_init = mem.vtx_marker (Must set this marker else "quads" before game-loop will be overwritten in the game-loop) while(running) { !!! Must reset the vtx_marker to where it was before the game-loop else there will be a vtx_buffer overflow since CreateQuad increments the vtx_buffer index * 36 every frame. // Reset vtx_marker mem.vtx_marker = mem.vtx_marker_after_init vtx_marker | V vtx_buffer |--q1--|--q2--|-------------| (has to start after where the last quad was written before game-loop) vtx_marker | V q3 = CreateQuad |--q1--|--q2--|--q3--|------| } CreateQuad(vtx_buffer, pos, tex_pos, etc....) { vtx = mem.vtx_marker_after_init + mem.vtx_marker assign vtx_buffer[vtx + (0 - 35)] (36 vtx's per quad) mem.vtx_marker += 36 } |