Ich hab etwas ähnliches mit einem shader gemacht.

Leider geht das nur mit monospace ansonsten wird das sehr kompliziert.

Ich hab einen Bitmapfont generiert mit den entsprechenden Zeichen die ich brauchte.

Dann einen Array erstellt mit einer Größe des maximalen ascii Zeichen, der an der entsprechenden Position passend zur Bitmap den Zeichencode als Array-Position hatte. Das heißt auf der Bitmap ist das erste Zeichen ein "A" also ist im array der Wert der dem code für A zugeordnet ist die position (Einzeilig) des Zeichens in der Bitmap.

Nun Text in den Shader zu schreiben ist etwas tricky. Ich hab eine 32 bit FLoat bitmap erstellt, die mit den Zeichen positionen (über den lookup array den ich erstellt hatte) gefüllt wird.

Im Shader selbst wird nun die position mit dem Text-Offset subtrahiert und dann durch die Zeichenbreite geteilt. Damit weiß ich an welcher Textposition/Zeichenposition ich mich befinde. Entsprechend die Data bitmap abgefragt und die Position des Zeichens erfahren und dann auf die Zielbitmap geschrieben.

Das lief erstaunlich schnell, besonders, wenn man die data Bitmap nicht jeden Frame neu befüllen muss. Da es eine 32 bit float bitmap ist, können dann noch metainfos wie Farbe mitgegeben werden. Ich hatte das mal für eine editbox verwendet.

Ich werde mal versuchen dies animiert multiline umzuschreiben (hatte soetwas auch schon angefangen) und unicode zu integrieren.

Hatte vor kurzem auch versucht mit der Methode nicht monospace Fonts auf Bitmaps zu schreiben. Aber das macht nur Kopfschmerzen. Das ganze ist so schon recht komplex.