Используйте текстуры. Каждый символ представляет собой текстурированный квадрат, а координаты текстуры заключают в себе определенные символы.
Затем вы можете связываться с использованием списков отображения, генерируя растр, представляющий строку во время выполнения, обрисовывая в общих чертах, смешивая ...
Вы можете использовать специфичный для платформы API OpenGL (т.е. wglUseFontOutlines), но я думаю, что он не рекомендуется с OpenGL 3.2.