Text Rendering Part 1: Font Rendering Basics

November 25, 2011

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.

read more …

Floor and Ceil Are off by One

October 16, 2011

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.

read more …

Tags

How Long Do You Wait? (Rebuttal)

July 24, 2011

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.

read more …

Tags

How Long Do You Wait?

July 17, 2011

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.

read more …

Tags

Conquest’s Technical Details

December 13, 2010

Custom-Built Engine

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.

read more …