Ich bins mal wieder Ich hab ein Problem mit dem Zeichen von Text:
Ich verwende Texturen (im Moment tga) mit transparentem Hintergrund und weißen Buchstaben. In OGL will ich den Text dann, wenn er gezeichnet wird, in Farben von Schwarz über Rot... bis zu Weiß anzeigen können, der Hintergrund sollte immer transparent bleiben. Mit glBlendFunc funktioniert das auch ganz gut, aber bei allen Einstellungen immer nur so, dass entweder schwarzer Text NICHT mehr angezeigt wird, sondern nur der Hintergrund sichtbar ist.
Die Schrifttexturen könnte ich auch anders anlegen, z.B. ohne Transparenz, ich will aber unbedingt erreichen, dass der Text mit allen Farben mit vollem Alpha gezeichnet wird. Was muss ich bei glBlendFunc einstellen? Wie könnte ich das lösen?
Registriert: Di Dez 03, 2002 20:59 Beiträge: 8 Wohnort: Niederbayern
Für den Fall, dass unklar ist, was ich meine :
Ich verwende als Schriften tga-Files, die so aufgebaut sind:
____ ____ ____... <--- Font.tga --- 256x256 Pixel
|16*16 2 | 3
|____|____|____... Hintergrund transparent
| 17 | 18 | 19
|____|____|____... Vordergrund weiß
...
Display-Lists, die die Breite der Buchstaben berücksichtigen, werden erstellt und können später für die Strings, die geschrieben werden sollen, abgerufen werden. Davor stelle ich eine Farbe mit
glColor(0.1,0.1,0.1,1.0) // Beispiel, um grauen Text zu sehen
ein.
Nun ist glBlendFunc(...) entscheidend. Ich will, dass der Hintergrund (die Stellen, die transparent sind) nicht überschrieben wird, sondern nur die weißen Stellen mit der eingestellten Farbe (hier grau).
Doch mit meinen Einstellungen (habe schon rumprobiert)
glBlendFunc(GL_SRC_COLOR,GL_ONE) // HG alles, Weiß der Textur zeichnen
zeichnet er nur helle Farben, z.B. glColor(1.0,1.0,1.0,1.0), bei Dunklen sieht die Schrift TRANSPARENT aus ( Als wäre der Alphawert<1)!
Was soll ich machen???
Edit:
Ich könnte die Texturen natürlich auch anders färben, etwa Schwarz und Weiß...
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
ich bin einfach mal faul ... aus dem stehgreif habe ich auch nichts. Sonst einfach mal aufm Upload den aktuellen stand hochladen oder mir auch (eimalig *gg*) zu mailen. Ich sehe es mir dann mal kurz an. Spontan klang deines gar nicht soooo falsch...
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Di Mai 14, 2002 21:07 Beiträge: 70 Wohnort: Heilbronn/Neckar
Also:
1. Beim Blending Lighting aus. IMAO hast du vergessen das OpenGL Lighting zu deaktivieren: glDisable(GL_LIGHTING);
2. Ich weiß nicht wies bei Jan Horn war, aber ich verwende die standard OpenGL Header und da gibts für solche Fälle glcolor3f Fürs Blending an sich nehm ich glcolor4f. Probier mal einfach aus, obs deine Header mitmachen, hab da keine Besondere Ahnung Aber an irgendsowas liegts denk ich
Registriert: Di Dez 03, 2002 20:59 Beiträge: 8 Wohnort: Niederbayern
Das hat keine Auswirkungen . Das Problem ist, dass OGL die weißen Pixel (Color=1.0) bei glColor(0.1,0.1,0.1,1.0) nur mit niedriger Transparenz statt mit dunkler Farbe zeichnet! (Warum?)
Registriert: Di Dez 03, 2002 20:59 Beiträge: 8 Wohnort: Niederbayern
Hmm...
Jetzt habe ich die richtigen Einstellungen (glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)) gefunden!
Aber ich frage mich, wieso ich das nicht schon eher rausgefunden habe?
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.