2010-12-13 19 views
0

Ich habe eine Textur, die an verschiedenen Stellen halbtransparent mit unterschiedlicher Opazität ist. Ich habe die Haupttextur-Bitmap und eine Masken-Bitmap. Wenn das Programm ausgeführt wird, werden die Alpha-Werte aus der Masken-Bitmap in die Alpha-Werte der Haupttextur-Bitmap geladen. Die Bereiche, die transparent sein sollen, haben einen Wert von 255 Alpha, und die Bereiche, die vollständig undurchsichtig bleiben sollen, haben Werte von 0 Alpha. Zwischenwerte gibt es auch für mittlere Transparenz.glBlendFunc() mit 32-Bit-RGBA-Texturen

Ich habe alle Arten von glBlendFunc() Einstellungen versucht, aber es ist entweder völlig unsichtbar oder es wirkt auf die RGB-Farben der Quelltextur.

Antwort

4

Normalerweise in OpenGL bedeutet 0 transparent und 255 undurchsichtig, was das Gegenteil ist, das Sie haben.

so etwas wie:

glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); 

Sollte funktionieren.

+0

Ich habe es gerade versucht. Es ist überall schwarz, dass die Textur transparent sein soll. – oldSkool

+0

@ Old-School-Regeln: Sind Sie sicher, dass etwas anderes als Schwarz in den Framebuffer war, als Sie das Zeichnen gemacht haben? Was ist deine klare Farbe? Wenn schwarz, versuchen Sie es mit etwas anderem, um zu sehen, ob es sich um ein Zeichenreihenfolgeproblem handelt. – Bahbar

+0

Ich werde nochmal alles nochmal überprüfen ... Ich habe den Hintergrund auf rot geleert, um zu sehen, wie die Transparenz funktioniert, aber es ist jetzt ernsthaft aufgebockt. – oldSkool

0

Ich hatte das gleiche Problem. Ich habe SDL_Image verwendet, um meine Bilder zu laden. Ich erkannte, als ich das Bild umwandelte, das ich SDL_DisplayFormat anstelle von SDL_DisplayFormatAlpha verwendete. Das hat mein Problem gelöst.

Verwandte Themen