But in order to do it, I’ve had to disable my normal attempt to take over memory allocation; that’s all still causing compilation errors inside STL, via Box2D. More investigation required. I really do want to keep control of memory management as much as possible; giving that up really relinquishes too much debugging power for my comfort.
But it works. Both 2D and 3D rendering, all hardware-accelerated, with bloom, lighting, and other shaders all functioning correctly.
As part of this, I’ve upgraded VectorStorm to use Box2D version 2.2.1. This was a pretty big API change and required a lot of under-the-hood changes to VectorStorm’s collision and physics classes. But it’s also a lot more stable and reliable than the old version 2.0.0 that I was using before. Not seeing bullets bounce off of asteroids any more, yay!
I’m now treating Box2D as an external dependency; that is, I don’t provide it inside my source control repository any more (again, except for under OS X, where I provide a pre-built framework binary. Because Box2D doesn’t provide one, or a way to build one).
So I’ve verified that graphics, keyboard input, sound/music, and file reading/writing all work under Linux. I have not yet verified threads or networking, or gamepad support. But I imagine that those should be fine.
I have more cleanup to do, though; in the process of making Linux work, I’ve broken OS X and Win32. So now I have to re-fix those. Hopefully tomorrow I’ll get stuff to a point where all three platforms will work at the same time!
…and then I’ll get to think about iOS again. It never ends!