Wenn Sie eine Font-Rendering-Engine wie FreeType verwenden, besteht der häufigste Fehler darin, Zeichenfolgen in jedem Frame neu zu rendern. Dies ist sinnlos, da beim Rendern einer Zeichenfolge diese normalerweise mindestens einige Sekunden lang unverändert auf dem Bildschirm angezeigt wird.
Wenn Sie einen Text anzeigen möchten, rendern Sie diesen Text einmal in eine Textur und zeichnen Sie diese Textur, anstatt den Text erneut zu rendern. Wenn Sie dies tun, fallen die Kosten für das Rendern von Text nur an, wenn Sie zum ersten Mal eine bestimmte Zeichenfolge mit bestimmten Einstellungen rendern müssen. In jedem nachfolgenden Frame sind die Kosten für die Anzeige dieser Zeichenfolge dieselben wie für das Zeichnen eines anderen Sprites dieser Größe.
Eine Lösung, die ich in verschiedenen Projekten als sehr praktisch empfand, bestand darin, eine TextRenderingCache
Klasse zum Verwalten zwischengespeicherter Schriftwiedergaben zu haben. Es hat normalerweise eine Hash-Tabelle mit Zeichenfolge plus Rendereinstellungen (Schriftart, Farbe, Größe usw.) als Schlüssel und eine Textur mit dem Rendering als Wert. Wenn ein bestimmtes Rendering von der TextRenderingCache-Klasse angefordert wird, wird geprüft, ob dieses Rendering bereits vorhanden ist, und wenn nicht, wird eines erstellt. Das Löschen von Renderings aus der Hash-Map, die einige Sekunden lang nicht verwendet wurden, um Speicherverluste zu vermeiden, ist optional (einige Spiele benötigen dies, andere nicht).
Übrigens: FreeType verfügt bereits über ein Rendering-Cache-System . Es wird jedoch nur verwendet, wenn Sie es explizit verwenden.