FastText
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
LobbyBetreff: FastText |
Di, Feb 28, 2012 21:39 Antworten mit Zitat |
|
---|---|---|
Wie funktioniert das max2D interne DrawText? Ganz einfach, bei jedem Aufruf wird der übergebene String Buchstabe für Buchstabe separat gezeichnet. Soweit so gut, aber wenn man viel Text verwendet bedeutet das daher auch, dass sehr sehr viele Bilder eingezeichnet werden müssen, und das für jeden Frame. Im Endeffekt kann das dazu führen, dass keine Zeit mehr für andere, auch nicht grafische Dinge bleibt, ohne dass das Programm zu ruckeln anfängt.
Die Lösung: Texte, die sich selten ändern (sagen wir höchstens einmal alle 10 Sekunden), können vorgerendert und später als einzelnes Bild eingezeichnet werden. Da das Vorrendern je nach Textgröße sogar ebenfalls recht zügig abläuft, ist ein erneutes Rendern kein Problem, zudem sollten keine Ruckler auftreten. Hierfür stellt das Modul lobby.fasttext einige Funktionen bereit, zudem kann man auf ein manuelles Verwalten der vorgerenderten Texte verzichten und stattdessen wie mit DrawText arbeiten (nur eben in den meisten Fällen schneller). Gedownloaded kann das Ganze hier werden (gewöhnliches ZIP-Archiv der Größe 1,08 MB). Kurz die Hauptfunktionen (der Klasse TFastText):
Es ist ein (für Windows vorkompiliertes) Beispiel enthalten, welches neben der Verwendung auch den möglichen Geschwindigkeitszuwachs zeigen soll. Per Leertaste kann zwischen den Modi kein FastText, FastText nur für einzelne Zeilen und Fasttext für Textblöcke gewechselt werden. Die jeweiligen FPS waren bei mir durchschnittlich 50, 450 und 900. Hier noch ein Bild des Beispiels: Ich bin ein Link zu einem Bild Sicherlich, es ist unwahrscheinlich, dass Ihr einen solch langen Text in einem Spiel verwendet (und ihn dann zwecks des Schattens auch noch gleich zweimal zeichnet), aber aus Erfahrung weiß ich, dass bei größeren Projekten auch schon bedeutend weniger Text reicht um die FPS merklich zu drücken, insbesondere, wenn bereits sehr viele Grafiken gezeichnet werden müssen. Mich würde interessieren, wie bei euch so die Zeitersparnisse sind und ob es sich auch in bereits bestehenden Projekten merklich auswirkt. |
||
- Zuletzt bearbeitet von Lobby am Mo, Aug 07, 2017 16:22, insgesamt 4-mal bearbeitet
DAK |
Di, Feb 28, 2012 23:19 Antworten mit Zitat |
|
---|---|---|
Bei deinem Sample hab ich die folgenden Werte: 26ms/37fps, 1ms/999fps, <1ms,>1000fps
Der Geschwindigkeitszuwachs ist also enorm. Hab im Moment kein Projekt, wo ich das gut verwenden könnte, hab aber eins im Kopf, wo ichs einsetzen könnte. Bleibt ganz sicher in meinem mod-Verzeichnis, vielen Dank. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Lobby |
Mi, Feb 29, 2012 15:01 Antworten mit Zitat |
|
---|---|---|
Danke für das Testen, DAK, der Geschwindigkeitszuwachs scheint ganz annehmbar zu sein.
Ich habe zudem festgestellt, dass sich über diese Methode auch solche unscharfen Texte vermeiden lassen, wie sie bei bestimmten Hardwarekonfigurationen und Einstellungen leider hin und wieder auftreten können: (Danke thunder, für das Bild) Ich habe noch vergessen zu erwähnen, dass diese Methode den Text zu zeichnen natürlich etwas Speicherlastiger ist als das normale Zeichnen, aber eine kleine Rechnung zeigt, dass das für heutige Rechner kein Problem darstellen sollte: Bei einer Auflösung von 800x600 Pixeln (es ist unwahrscheinlich, dass die Textbedeckende Fläche so groß ist) hat man 480.000 Pixel für die jeweils 1 Byte an Speicher benötigt wird. Somit werden für einen derartigen Text gerade einmal 480.000 Bytes = 468,75 KB = 0,458 MB benötigt. Speichertechnisch braucht man sich also hier wirklich eher weniger zu sorgen, insbesondere wenn man an die Relation zum Geschwindigkeitszuwachs denkt. Es ist noch darauf zu verweisen, dass die vorgerenderten Texte an die maximal unterstützte Texturgröße gebunden sind, sodass man darauf verzichten sollte, überdimensional riesige Texte vorzurendern (hier sollte man manuell den Text in kleinere Abschnitte einteilen lassen, denn gerade bei solchen Texten wäre DrawText weniger zu empfehlen (auch abhängig von der Schriftgröße natürlich). |
||
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux |
bmurray |
Mo, Aug 07, 2017 11:03 Antworten mit Zitat |
|
---|---|---|
Hallo,
leider ist die Datei nicht mehr hinterlegt. Hat jemand dieses Modul zufällig noch, und falls ja, würde er/sie es mir zusenden? |
||
Lobby |
Mo, Aug 07, 2017 16:21 Antworten mit Zitat |
|
---|---|---|
Kein Problem, Links angepasst. | ||
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux |
bmurray |
Mo, Aug 07, 2017 22:03 Antworten mit Zitat |
|
---|---|---|
Super! Vielen herzlichen Dank | ||
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group