I've been cleaning up my personal SDL2 toolchain this weekend and updating it to the OpenGL 3.2 Core Profile, and I figured I'd share here in case it's useful to anyone else.
Basically, I wanted to make it easier to make chunky-pixel games, so I've implemented and shared:
(i) A build toolchain in python which imports portable assets (PNG, PSD, GIF, WAV, MP3, TMX, TTF) and other general userdata and exports a native binary (*.bin) which is loaded using SDL IO. Sprites and Glyphs are automatically atlassed onto textures and WAVs and other big buffers are zipped with zlib to keep the size down.
(ii) A batching Sprite and Spline renderers which use a "triple buffered" approach. There are 3 shared dynamic vertex buffers which are populated round-robin with sprites until a draw call is induced (either because it hit capacity or GL state, like the texture atlas, has changed) at which point we swap. This way, thanks to OpenGL's asynchronous pipeline approach, one batch is currently being rendered, one is "in flight" and one is actively bound to the application and there's high saturation and throughput.
(iii) I'm also playing around with linking the Mono redistributable runtime and binding using P/Invoke to support end-user modding of games.