Wird es mein Spiel nicht verlangsamen, wenn ich FreeType lib verwende und 2 Schriftarten aus .ttf konvertiere, anstatt vorinstallierte BitmapFont .png zu verwenden? Oder kann FreeType so schnell sein, dass ich Schriftarten in beide Richtungen verwenden kann? Ich muss nur Farbe und Größe meines Textes ändern. PS Ich verwende 3 Schriftarten in meinem Projekt
8
Antworten:
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.
quelle
Ja, Freetype ist angemessen. Wenn Sie PNG - Dateien verwenden, müssen Sie einen für jede Größe und jede Farbe machen, und das belegen kann 10 - mal den Raum eine .ttf - Datei in Anspruch nimmt. Auf Wiedersehen, freier Speicherplatz auf Android- und iOS-Geräten. Außerdem müssen Sie nur 1 .ttf-Datei erhalten, und das war's. Hoffe ich habe dir geholfen!
quelle