Said person would be me. Right, status update:
In the accelerator, and as standalone code, I've tried using quite a few different ways of rendering. To summarize, from memory (the number may be off):
- Using immediate-mode calls, but minimizing redundancy (no calling glBegin per tile) I get about twice the speed of DF
- Replacing quads with triangle strips yields another 20% or so
- Display lists are useless, since the texture needs to be set /somehow/ on a per-tile, per-frame basis
- Using a static_draw VBO to feed a triangle strip, and a dynamic_draw one for the textures, produces an enormous jump in speed - close to zero cpu use at 60fps, thousands of frames per second
- Switching to using *two* dynamic_draw setups for the textures moves cpu use even closer to zero, but doesn't affect framerate on my laptop. Like anyone would care at this point.
However, the last setup doesn't handle background colors. I could emulate that in a variety of ways, but instead I decided to use a pixel shader, and upload the tile control data (foreground color, background color, texture pointer) as a texture once per frame instead. Alternating PBOs, that slightly drops cpu use, drops max framerate to four hundred and something (at 40% cpu use. Fill-rate limited. Heh.), and is generally amusing.
It also doesn't work on GPUs without pixel shaders, but to be honest, those were introduced so far back that very few opengl paths could be relied on to work on them - it'd pretty much have to be immediate mode to be sure.
You can find some standalone code that implements it on
http://brage.info/~svein/dfview/ , by the way - it doesn't do the PBO alternation, mind.
So, right now I'm busy ripping out the guts of Battle Champs and replacing it with this - replacing the main loop with GLUT calls. It really doesn't suck as much as people think, and has the advantage of being preinstalled on macintoshes. The windows version can bundle it. Should be fine.
For the three people who are stuck on geforce 2s, I might add an SDL/2D path as well, or I might just leave that up to someone else. Probably the latter; I'll make sure to comment heavily.