2011-01-16 13 views
0

Wie kann man die Länge von Bitmap-Schriften, die in OpenGL gerendert werden, korrekt bestimmen? Ich benutze 2D ortho und die wglUseFontBitmaps() - Funktion, um Schriftartenlisten in Windows zu erstellen. Wenn ich die Größe meines resultierenden Textes (zum Zentrieren, Formatieren usw.) messen möchte, was ist der richtige Weg?Messen von Bitmap-Schriften mit OpenGL (Windows)

Sollte ich die Win32 GDI GetTextExtent() API-Funktion verwenden, oder gibt es eine Möglichkeit, die aktuelle Position des Cursors in OpenGL zu bestimmen? Die glRasterPos-Funktionen legen die Ausgabeposition fest, und wenn jedes Zeichen gerendert wird, rückt die Ausgabeposition automatisch vor. Gibt es also vielleicht ein glGetRasterPos, das ich verwenden könnte?

Antwort

2

OpenGL besitzt nicht die Schriftarten; Windows GDI muss die Information bereitstellen. Ich habe gezeigt, wie man es richtig macht in my answer to this question. Sie benötigen GetCharABCWidths() für die Breiten pro Zeichen und GetTextMetrics() für die Höhen. Schauen Sie sich meine for Schleife über formatierteString.GetLength(), die die Zeichenfolge Breite in Pixel berechnet. Dann können Sie 10 verwenden, um den Text an die richtige Stelle zu setzen.