I have a simple portal/sector rendered FPS maze that's around 'DOOM' or Quake 1 geometric complexity. Of course, I'm using OpenGL and VBOs. Shaders are optional in my engine. (Fallback to fixed-function vertex lighting when needed/specified)
I also have an old PC with a k6-3 processor and a Voodoo 3 graphics card. It dual boots windows 98 (for those 3dfx glide games I don't want to emulate) and lubuntu 10.04.
I decided to compile it on the voodoo machine for no reason other than curiousity. I figured that glquake runs really good on this machine, so a homemade game that looks worse than gl DOOM should run good too.
After a little source tweaking, it built. Run... segfault. Fired up gdb: glCreateBuffer (and glCreateBufferARB) are missing... Right... voodoo 3. Ok, old-style vertex arrays look just like VBOs, just glVertexPointer is a real pointer instead of a screwy offset. Very minor tweak to make this work. (All my VBO stuff is abstracted, so I literally change it in one place...)
Next crash: glActiveTexture was NULL. What? Oh, don't panic. My card only supports glActiveTextureARB. Ok, simple change, use ARB when core isn't available. (I already do the same on my netbook; for whatever reason the Atom I have supports glCreateBufferARB but not glCreateBuffer...)
A little bit of tweaking and... well its a slideshow.
Turn on some optimizations. (On my desktop PC I get away with "-g" because I'm not close to CPU bound. Turn on -O3 and --fastmath) and wow, like 15-20 fps.
Next up: I know I need to put in state sorting. Instead of rendering, I'll put items into a queue, then sort by texture, then render. In fact, right now even if I draw two things that are the same texture right after each other, I'll still re-bind the second item even though I'm not changing anything. Bad, bad.
Why am I doing this? Mostly fun. But its also useful. If a vertex-lit, FPS looks like DOOM, it better run at the speed of gl DOOM on a computer that can play gl DOOM, or I've done something horribly wrong.
That, and I'm exploring the possibility of a gracefully degrading engine. When I run by terrain test app on my desktop, the triangles subdivide tiny to just being a few pixels wide. Lots of procedural detail. When I run it on my netbook, I divide even less. You can see the polygons, but the core flying mechanic is the same. I run it on voodoo. The polygons are huge, but its still the same rough terrain and same core mechanics (though its much slower than I want; 5-10 fps for terrain, I'll get the numbers up there.)
Anyway its a lot of fun. Oh, and this is in the lounge, because, well, who in the opengl forum would care about making it work on a voodoo card!