Die OpenGL bietet keine direkte Unterstützung für die Schriftarten des
jeweiligen Systems. Es ist aber möglich, die vorhandenen Methoden der OpenGL wie z.B.
Bitmaps oder Pixmaps, Texturen, Linien oder Polygone in Buchstabenform usw. zu nutzen.
- Bitmaps und Pixmaps
Die wohl am häfigsten genutzte Methode stellen einzelne Buchstaben, definiert
mittels glBitmap() oder glDrawPixels() dar.Damit erhält man einfachen 2D Text,
der z.B. für die Beschriftung von Kontrollelementen verwendet werden kann.
Dabei ist glBitmap() am einfachsten und schnellsten. Die enthaltene Bitmaske gibt in einem
rechteckigen Bereich an, welches Pixel mit der aktuellen Farbe geschrieben wird und welches nicht.
Dagegen zeichnet glDrawPixels() immer ein vollständiges Rechteck in den Framebuffer,
so dass der Hintergrund hier noch mittels Alpha-Test oder Blending entfernt werden muss.
Normalerweise definiert man für jedes glBitmap() eine eigene Display-Liste. So ist es dann
leicht möglich, durch glCallLists() gleich mehrere Buchstaben anzuzeigen.
Unter X Windows (Unix) steht auch der Befehl glXUseXFont() zur Verfügung, mit dem
sich passende Display-Listen für einen angegebenen Font einfach erzeugen lassen.
Unter MS Windows gibt es den Befehl wglUseFontBitmaps(), der vergleichbar zu glXUseXFont()
arbeitet.
GLUT bietet den Befehl glutBitmapCharacter(), der allerdings nur mit speziellen
GLUT Bitmap Schriftarten zusammenarbeitet und daraus erst ein mit OpenGL nutzbares Bitmap
berechnet.
Texture Mapping
In vielen OpenGL Implementationen sind die Befehle glBitmap() und glDrawPixels()
deutlich langsamer als das Zeichnen eines texturierten Objekts. Hier sollte man daher
auf die texturierten Objekte zurückgreifen.
Die Grundidee ist es, eine einzelne Textur zu erzeugen, die bereits alle Buchstaben
enthält. Das Zeichnen eines einzelnen Buchstaben wird dann über entsprechende
Texturkoordinaten realisiert. Unerwünschte Hintergrundpixel lassen sich z.B. mittels
Alpha-Test unterdrücken.
Bei diesem Link findet man
Informationen u.a. zu texturierten Fonts.
Eine Bibliothek dazu findet man auch hier.
Auch GLUT enthält passende Beispiele.
NeHe's Webseite bietet ein Tutorial zum Thema.
In der alten Version der FAQ war noch dieser
Link enthalten.
Umriss-Schriften
Unter MS Windows gibt es den Befehl wglUseFontOutlines(). Die MSDN enthält auch
Beispielprogramme zu dessen Verwendung.
Auch GLUT bietet mit der Funktion glutStrokeCharacter() Zugang zu spezifischen
Umrisschriften von GLUT.
Geometrische Schriften (Objekte)
NeHe's Webseite hat ein Tutorial
für die Beschreibung von Schriften als geometrische Objekte ins Netz gestellt.
Das Tutorial nennt sich Outline Fonts.