To an unknowledgeable individual, rendering text proposes itself to be quite simple. Take a texture for each character (glyph) and render it where the previous character ended. Throw all the glyphs into one texture and you have how most games render fonts – bitmap font rendering. But is that really all there is to it? No. People want pretty, scalable fonts where the characters align perfectly with each other, and in that process they created vector (or outline) fonts and a bunch of metrics you are expected to care about.
There are dozens of articles and posts about floating point values and their accuracy problems, but I hadn’t encountered this instance of it before.
After seeing truly how slow compile times with MinGW were, it wouldn’t stop bothering me. I was actively aware of how much time I was wasting and every time I hit build, I was annoyed. The computer scientist in me had to find a better solution. Compiler and build system benchmarks ensued. Jump to the bottom if all you want to see are the final results.
I’ve been improving our font rendering again over the last one or two weeks, which in turn brought me to testing its performance towards the end. In a weird turn of events though, I found myself going around the world of operating systems and compilers trying to finally find an acceptable alternative to MinGW’s slow compile times.
Conquest uses our fully custom-built platform-independent Proxy Engine, which is primarily based on OpenGL, OpenAL, and boost, along with a couple minor utility libraries like SDL and curl. Our main design goal for this engine is to keep things as simple as possible with a “minimal and complete” interface. A lot of engines and programs out there introduce unnecessary difficulty due to fancy naming and abundant interfaces, trying to predict every possible usage scenario and complementing it with a corresponding interface – while we try to strip things to their bare essentials. We also achieve this with zero cost, since all our tools are free or open-source.