[LWJGL]Fonts mit der glBlendFunc()

Java-Jr.

Mitglied
Hallo,

Ich wollte mir so eine kleine GUI-Klasse für 2d-Spiele mit LWJGL machen.
Als erstes hab ich mir eine Button vorgenommen, der natürlich auch eine Aufschrift haben soll, deshalb die Fonts, die ich über Slick2D in ein TrueTypeFont objekt lade.
Um jetzt die Fonts anzuzeigen, muss man davor

Java:
        glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        glEnable(GL11.GL_BLEND);

ausführen.
Ansonsten wird die Schrift nur als ein Rechteck angezeigt, das anstonsten alle Eigenschaften wie die gewünschte Schrift hat (Farbe, Maße, Position).
Aber nachdem die BlendFunc so eingestellt ist, werden andere Formen (z.b. das Viereck, was um die Schrift als Button herum soll) einfach gar nicht mehr gezeichnet......
gibts keinen anderen Weg, als das Blend genau vor dem Zeichnen der Schrift zu Enablen und danach wieder zu disablen und das dann jedes Frame?
 
G

Guest2

Gast
Moin,

das ist so eigentlich gar nicht so schlecht. Am besten zuerst alle nicht transparenten Formen zuerst zeichnen, dann Blending einschalten und alle Schriften zeichen, anschließend Blendig wieder ausschalten.

Wenn Du den Alpha Wert der Formen passend setzt, könntest Du das Blending auch dauernd aktiv lassen, aber das ist schlechter, da ein Schritt mehr in der OpenGL Pipeline benötigt wird.

Viele Grüße
Fancy
 

Java-Jr.

Mitglied
Naja, in der Methode Button.draw(x, y); (*Beispiel*)
muss ich das dann aber auch nochmal ändern, denn die soll ja den Button (kein blend) und die Schrift(blend) zusammen zeichnen.....
 
G

Guest2

Gast
Eigentlich ja. OpenGL ist darauf ausgelegt "ähnliche" Sachen in möglichst großen Blöcken direkt hintereinander zu bekommen. Viele kleine Einzelteile bremsen aus. Insbesondere wenn das dann noch über Bremsklötze wie glBegin(), glVertexXX(), usw. übertragen wird.

Andererseits wirst Du vermutlich (ohne es zu wissen) eh viele Dinge machen, die viel schlimmer sind als ein ständiges ein-/ausschalten des Blending. Aber das gehört zum OpenGL Lernprozess. Insofern, wenn es in Deinem Programm erstmal einfacher ist, das für jeden Button immer wieder ein/auszuschalten, kannst Du das auch bedenkenlos so machen.

Viele Grüße
Fancy
 

Ähnliche Java Themen

Neue Themen


Oben