Wie mache ich OpenGL Live-Text-Rendering für eine GUI?

Ich implementiere eine GUI, die auf OpenGL aufbaut. Ich bin auf das Problem gestoßen, das jede GUI haben wird - das Rendern von Text. Ich kenne verschiedene Methoden zum Rendern von Text in OpenGL. Ich frage mich jedoch, welche davon am besten für eine GUI geeignet sind.

In der Regel gibt es in einer GUI zwei Arten von Text - statisch und live. Statisch ist einfach genug - wir können eine TTF in eine Textur rendern und diese vergessen. Es ist der "Live" -Text, der mich mehr stört - stellen Sie sich eine Konsole oder einen Live-Chat in einem Multiplayer-Spiel vor.

Ich dachte an mehrere Möglichkeiten:

Keine besonderen Fälle - rendern und laden Sie eine Textur jedes Mal, wenn sich der Text ändert. Beachten Sie dabei, dass diese Textur nur dann neu gerendert wird, wenn tatsächlich neuer Text angezeigt wird, und versuchen Sie, den größeren Text in kleine Teile zu teilen (wie pro Chatzeile). Dies würde uns jedoch in Fällen wie einer sich ständig ändernden Score-Zeile oder einem Intro-Text, der "pro Zeichen" wiedergibt (Schreibmaschinenstil, der in einigen Science-Fiction-Spielen zu sehen ist), immer noch hängen lassen.Quad-pro-Zeichen - Dies scheint auch eine beliebte Lösung zu sein. Sie bereiten eine Textur mit der ASCII-Tabelle vor und rendern ein texturiertes Quad-Zeichen. Ich habe jedoch ernsthafte Zweifel an der Effizienz einer solchen Lösung. Tipps, wie man das schneller macht, wären auch willkommen.hybride Lösungen - aber ich habe keine Ahnung, wie ich das umsetzen sollsauber

Die Frage ist daher: Wie kann man Text in OpenGL effizient rendern?

Wenn dies hilft, programmiere ich in STL / Boost-lastigem C ++ und ziele auf Grafikkarten mit GForce 6 und höher ab.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage