Jup, das ist Möglich
Dazu muss man zunächst mal den Color-Wert deines Quadrates etwas verändern... ich gehe nun mal davon aus, dass du bislang immer "glcolor3f" verwendt hat, um deinen Quads eine Farbe zuzuweisen.... Nun muss man halt "glcolor4f" verwenden, wobei die nun neue 4. Zahl die Transparenz ausmacht
(z.b. glcolor3f(1,0,0) ergibt reines Rot .... glcolor4f(1,0,0,0.2) ergibt dasselbe Rot, bis auf, dass es zu 80% Transparent ist)
Damit das ganze denn auch noch wirkt, muss man "Blenden", was in diesem fall bedeutet, die Farbe deines Obejektes mit der der bereits vorhandenen Sznene zu "mischen", damit das obejkt Transparent wirkt... dies geht z.B. so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| glEnable(GL_BLEND); glBlendFunc(gl_src_alpha,gl_one_minus_src_alpha); glbegin(gl_quads); glcolor4f(1,0,0,1); glvertex3f(-1,1,-5); glcolor4f(0,0,1,1); glvertex3f(-1,-1,-5); glcolor4f(1,1,0,0.5); glvertex3f(1,-1,-5); glcolor4f(0,1,0,0.5); glvertex3f(1,1,-5); glend;
gldisable(gl_blend); |
Das Resultat ist in diesem Falle ein Quadrat, welches auf der Linken Seite (Rot, Blau) komplett sichtbar (also nicht Transparent ist) und auf der Rechten (Gelb/Grün) genau Halbe/Halbe den Hintergrund durchscheinen lässt....
Ps: es ist sehr ratsam, die Transparenten Obejkte zuletzt zu zeichenen... (also nach allen "festen" Obejkten", da ansonsten der Transparenz-Effekt kaum wirkung haben dürfte (das ganze läöuft auf Pixel-Basis ab, das heißt die anderen Obejkte werden nur berücksuichtigt, wenn sie bereits im Framebuffer sind....))
Nähere infos zum Blending gibts in einem meiner Tuts
(
www.dcw-group.net/in...oding/oglkurs/index)
PPS: habe das ganze hier leider etwas hau-ruck-Artig runtergerasselt... Transparenz in Open Gl ist leider ein Thema, mit dem man fast Bücher füllen kann ... in meinen Tuts habe ich es etwas genauer (und einfacher erklärt....)