Existem várias maneiras - dependendo do que você deseja ... Como em qualquer outro lugar, não há algo como "a melhor solução". Qual plataforma é seu alvo? Qual idioma você está usando? O que é redimensionamento / rotação de texto - é necessário? Você precisa ser capaz de renderizar TrueTypeFonts? O que é Multilanguage / Unicode? Como você deseja armazenar seu texto (qual codificação etc.)?
Eu usei no passado também o FTGL, bem como o tipo de código puro (http://www.freetype.org/ O FTGL é baseado nisso), diferentes tipos de fontes de bitmap, fontes de contorno ... Agora, estou mais viciado em bitmap fontes, mas isso é apenas minha preferência pessoal. Como não quero mais lidar com diferentes charsets, codificação e coisas assim - o licenciamento para bitmapfonts também é mais fácil e barato do que para TrueTypeFonts. E é utilizável em todas as plataformas que podem carregar imagens. Eu uso simplesmente um quad no openGL e mapeio uma parte da minha textura nele. O outro lado é: A fonte será redimensionável apenas com um fator de cerca de +/- 50%. Se você pode conviver com isso, sugiro usar um bitmapfont.
Se você também precisar lidar com diferentes codificações / conjuntos de caracteres, deverá encontrar uma maneira de carregar e usar o TrueTypeFonts (como no freetype, usando outra biblioteca ou com sua própria implementação) ...
Veja também os tutoriais diferentes da nehes sobre este tópico:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=13 Fontes de bitmap
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=14 Fontes de estrutura de tópicos
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=15 Fontes de estrutura de tópicos mapeadas para textura
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=17 Fonte de textura 2D
Boa sorte!