Ich glaube, das Problem liegt daran, dass du mit der Windows
GDI auf ein Fensterhandle zeichen willst, dass von
OpenGL benutzt wird. Solch ein "Mix" ist überhaupt nicht zu empfehlen, da dadurch genau solche Fehler entstehen können. Wenn du Text auf ein
OpenGL-Fenster zeichnen willst, solltest du das auch mit
OpenGL machen. Dazu hast du zwei Möglichkeiten.
- Bitmap-Fonts: die einzelnen Buchstaben werden in einer Textur gespeichert. Beim rendern zeichnest du dann einfach ein Quad und übergibst die Texturkoordinaten des gewünschten Buchstaben. Diese Methode ist sehr schnell und hat sogar den Vorteil, dass du alle Schriftarten benutzen kannst - egal ob sie auf dem Zielrechner vorhanden sind oder nicht - da du sie ja in ein Bitmap speicherst. Nachteil ist leider der etwas größere Aufwand bei der Erstellung und der Verwaltung der Fonts. Außerdem musst du bei dieser Methode Funktionen wie das Zeichnen oder das Auslesen der Schriftlänge komplett selbst schreiben.
Hier ein Tool, mit dem sich Bitmap-Fonts erstellen und benutzen lassen: Nitrogen Font Studio: FontStudio - Fonts erstellen Beispielprogramm zur Benutzung
- Windows-Fonts: diese Methode hat relativ identisch zur Windows-Methode. Du erstellst in OpenGL eine Display-Liste, in der die einzelnen Linien jedes Buchstabens gespeichert werden. Dafür gibt es sogar unter Windows bereits eine Funktion, die dir das abnimmt. Mit dieser Methode kannst du soger recht einfach dreidimensionale Schrift verwenden. Der Nachteil dieser Methode ist, dass es relativ zu den Bitmap-Fonts langsamer ist (aber immer noch schneller als die Windows-GDI).
Hier ein Beispiel, wie du das umsetzen könntest: wglUseFontOutlines
Grüße
Dave