OpenGL Text



  • Hi,

    ich versuche mit OpenGL Text auszugeben. Ich habe bereits ein Bild, in dem alle meine Buchstaben abgebildet sind. Eine Klasse liest dieses Bild ein und speichert es als Textur im OpenGL System. So weit, so gut.
    Jetzt stehe ich aber etwas auf dem Schlauch. Mein Plan war eigentlich, einfach jeden Buchstaben einzeln zu zeichnen, aber das wären ohne Ende draw-Aufrufe?
    Wie gesagt, ich bin gerade etwas verwirrt, vielleicht könnt ihr mir bei dem nächsten Schritt helfen.

    PS: Eine Lösung, die so modern wie möglich ist, ohne dass ich einen Shader schreiben muss, wäre perfekt. (So, dass ich nachher möglichst leicht meinen Shader dazwischenschieben kann.)
    Folgende Links kenne ich bereits, haben mir aber nicht wirklich weitergeholfen. Falls da irgendwo _genau_ das steht, was ich suche, einfach kurz drauf verweisen, danke. 🙂
    http://www.nullterminator.net/gltexture.html
    http://stackoverflow.com/questions/5262951/what-is-state-of-the-art-for-text-rendering-in-opengl-as-of-version-4-1
    http://nehe.gamedev.net/tutorial/lessons_11__15/28001/



  • Mach einen dynamischen Vertexbuffer, in den du deine Buchstaben packst und dann alles in einem Drawcall renderst.



  • Also ich erstelle einmal einen Puffer mit glBufferData(target, irgendeine_maximalgröße, 0, GL_DYNAMIC_DRAW). Da packe ich dann bei jedem "print()" texturierte Vertexe rein und dann rendere ich das in einem Call. Soweit korrekt?
    Dann bitte ich um eine ausführlichere Erklärung zu Schritt zwei, denn mir ist nicht klar, wie ich von dem einen in den anderen Puffer schreibe.

    (Den Texturpuffer selbst erstelle ich mit glBufferData(GL_TEXTURE_2D, ...))



  • Was für ein anderer Puffer? Was für ein Texturpuffer? Was hat GL_TEXTURE_2D bei glBufferData() zu suchen?



  • Ähm.. Entschuldigung, da muss was verrutscht sein! Texturpuffer erstelle ich natürlich mit glTexImage2D(GL_TEXTURE_2D, ...).



  • Ok. Aber was meinst du mit "von dem einen in den anderen Puffer schreiben"!?



  • dot schrieb:

    Was für ein anderer Puffer? Was für ein Texturpuffer?

    In dem Texturpuffer befindet sich das Bild, in dem alle Buchstaben vorhanden sind.

    Diese Buchstaben muss ich ja jetzt irgendwie zusammen mit Vertexen in einen anderen Puffer kriegen, damit ich den dann mit einem Call rendern kann. Oder habe ich dich da jetzt ganz falsch verstanden?



  • Um, du baust einfach für jeden Buchstaben ein Quad aus Vertices, mappest den entsprechenden Teil deiner Buchstabentextur drauf und renderst das ganze!?

    Was du da "zusammen mit den Vertices in einen anderen Puffer kriegen" willst, ist mir ziemlich schleierhaft



  • dot schrieb:

    mappest den entsprechenden Teil deiner Buchstabentextur drauf und renderst das ganze!?

    Ah ok, den Teil verstehe ich nicht, daher das Missverständnis. Wie mappe ich die Buchstabentextur auf ein Quad?



  • cooky451 schrieb:

    Wie mappe ich die Buchstabentextur auf ein Quad?

    Schonmal was von Texturkoordinaten gehört? Wenn nicht, solltest du vielleicht erstmal lernen, wie Texturemapping funktioniert...



  • Ja, ich habe diesen Link gefunden, das sollte in etwa das sein, was du meinst?
    Vielen Dank dann, ich gucke mir das mal an. 🙂



  • Ja, das solltest du dir mal genau angucken.
    Ich ging davon aus, dass jemand, der sich mit Text-Rendering beschäftigt, schonmal zumindest ein einfaches texturiertes Dreieck gerendert hat. Ich denk, bevor du mit deinem Buchstabensalat weitermachst, solltest du einfach nurmal das tun 😉


Anmelden zum Antworten