2016-08-01 39 views
0

Ich verwende derzeit die Freetype-Bibliothek, um Text in meine OpenGLES 2.0 App (beide iOS und Android) zu rendern und ich bin an den Punkt gekommen, wo ich ernsthaft die Leistung in Betracht ziehen muss. Ich habe einen Vorrat an Texturen (eine für jedes Zeichen) und jedes Mal, wenn ich Text rende, ruft der Charakter von diesem Texturbereich und dann bindet OpenGL daran, rendert es auf dem Bildschirm ... Für jeden Buchstaben! Sehr ineffizient. Also suche ich nach Möglichkeiten, dies schneller zu machen, und eine der Ideen, die ich hatte, bestand darin, jedes Wort vor jedem Buchstaben darzustellen. So, jetzt zur großen Frage: Wie kombiniere ich Texturen nebeneinander? Ich weiß, dass ich einen Puffer erstellen muss und dass es irgendwie von FT_LOAD_CHAR kommen wird, aber ich weiß wirklich nicht viel anderes.OpenGL Kombinieren Sie Textur nebeneinander

+0

"* Sehr ineffizient. *" Warum ist das ineffizient? –

+0

Fragen Sie, wie man einen PNG aus anderen PNGs macht, oder wie man nur Teile eines kombinierten PNG (Textur "Atlas") zeichnet? –

+0

Es ist sehr ineffizient, weil es relativ teuer ist, eine Textur an OpenGL zu binden. Wenn du es für jeden Charakter tust ... nicht gut. Derzeit versuche Codetiger die Antwort zu folgen. – iHowell

Antwort

1

Eigentlich haben Sie missverstanden, wie man FreeType benutzt. Sie können die Schriftart mit der FT-Bibliothek laden und alle Zeichen in eine einzelne Bitmap-Textur laden. Dann können Sie einfach Texturkoordinaten verwenden, um auf das richtige UV zu zeigen. Dieser Link kann in gewissem Maße helfen. Draw FreeType Font in OpenGL ES