# Anfängerfrage: Text anzeigen mit LWJGL



## zondan (21. Apr 2012)

Hallo,
ich bin relativ neu in Java und erst Recht in LWJGL und OpenGL.
Die Frage die ich jetzt habe ist: Wie kann ich Text in einem OpenGL Fenster zeichnen?

Ich hab natürlich bereits etwas herumgesucht und herumprobiert. Was ich bis jetzt raus gefunden habe ist das OpenGL(oder LWJGL?) keine direkte Möglichkeit bietet das zu tun. Jedoch bin ich mir da nicht so sicher, den ich habe auch sowas gefunden für C++

```
glFontBegin(&font);
glScalef(8.0, 8.0, 8.0);
glTranslatef(30, 30, 0);
glFontTextOut("Test", 5, 5, 0);
glFontEnd();
glFlush();
```
Damit kann man angeblich Text darstellen. Die glFontBegin, glFontTextOut und glFontEnd Methoden finde ich jedoch nicht in LWJGL.

Dann bin ich auf Slick gestoßen, das anscheinend LWJGL stark erweitert und unter anderem auch die Möglichkeit bietet einfach Text anzuzeigen.
Jedoch weiß ich nicht wie man das benutzt.
Im Forum hab ich dann einen Thread gefunden der mehr oder weniger diesen Codeteil enthalten hat:

```
GL11.glEnable(GL11.GL_TEXTURE_2D);
org.newdawn.slick.opengl.TextureImpl.bindNone();
font.drawString(100, 100, "TEST-TEXT", org.newdawn.slick.Color.yellow);
GL11.glDisable(GL11.GL_TEXTURE_2D);
```
Ich weiß nicht wirklich wie man font erstellt aber ich hab es mal so probiert:

```
UnicodeFont font = new UnicodeFont(Font.decode(Font.SANS_SERIF),20,false,false);
```
Es kompiliert problemlos und ich hab deutlich weniger FPS aber es wird nichts angezeigt.

Ich weiß jetzt nicht mehr wirklich was ich noch probieren könnte.
Die Frage ist auch ob es wirklich sinnvoll ist nur für die Darstellung von Text eine so große Bibliothek wie Slick zu benutzen. Am liebsten würde ich das direkt in LWJGL lösen. Denke der Lernfaktor wäre da größer als etwas schon fertiges zu nutzen.
Da hab ich etwas von einem Bild von einem Buchstaben in ein Quad zeichnen gelesen. Wie erzeuge ich dann aber das Bild vom Buchstaben aus einer Schriftart? Und vor allem wie zeichne ich überhaupt ein Bild? Hab bis jetzt nur Polygone gezeichnet. ^^

Würde mich freuen wenn mir jemand helfen könnte.


----------



## Evil-Devil (23. Apr 2012)

Hallo.

LWJGL selbst ist nur ein Java-Binding für OpenGL. Du kommunizierst somit direkt mit einer Bibliothek zur Anzeige von Linien, Dreiecksdaten und Texturen. Alles andere wie zb. die Darstellung von Schrift, darum muss man sich selbst kümmern.

Dein C++ Beispiel oben wird vermutlich die WGLExtension nutzen. Die gibt es in LWJGL nicht, da die WGL nur unter Windows verfügbar ist. Für Linux und Mac gibt es ähnliche Equivalente Extensions. Aber da die nicht allgemeingültig sind findest du die in LWJGL auch nicht.

Slick nur eine Engine die einige der Funktionen von OpenGL/LWJGL nutzt und kapselt. Viele Funktionen sind somit auch nicht von Slick abgedeckt, da sie einfach nicht in das Ziel - eine 2D Engine bereitzustellen - hineinpassen.
Es spricht nichts dagegen Slick für die Darstellung von Text zu nutzen. 
Hierzu kannst du dir zunächst die Webstart Demos Slick - 2D Game Library based on LWJGL - Webstart Demos anschauen und dann in Slick selbst den dazugehörigen Sourcecode.

Mit einzelnen Code-Fragmenten wird das so nicht laufen


----------



## zondan (24. Apr 2012)

Danke für die Antwort.
Ich habs jetzt geschafft mit Slick Schrift darzustellen. Würde zwar immer noch gern wissen wie man sowas direkt mit LWJGL macht aber ich denke fürs erste reicht mir Slick.
Vielen Dank für den Link zu den Demos. Das wird helfen.


----------

