OpenGL - Transparenz einer Geometrie

realpk

Mitglied
Hallo,

ich habe einen Würfel der aus 6 Quads besteht und jeder hat eine andere Textur.
Nun kann ich natürlich über die Textur pro Pixel Alpha Werte mitgeben, aber dies ist ja nicht für ein Alpha Blending in einer Animation vorgesehen.

Ich möchte nun eine Animation erstellen und pro Zeiteinheit die Transparenz der Geometrie (6 Quads) anpassen.

D. h. am Anfang ist es unsichtbar und nach z. B. 2 Sekunden ist es komplett sichtbar.
Für Transformationen ist dies ja ohne Probleme machbar, aber welche Möglichkeit habe ich da für Transparenzen?

Wie kann ich dies performant lösen?
Vielen Dank.
 
Hallo,

arbeitest du mit der Fixed Function Pipeline? Dann kannst du z.B. glBlendFunc(GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA); als Blending einstellen. Den Alpha-Wert kannst du dann über glBlendColor setzen.

Grüße,
Matthias
 
Hallo,

arbeitest du mit der Fixed Function Pipeline? Dann kannst du z.B. glBlendFunc(GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA); als Blending einstellen. Den Alpha-Wert kannst du dann über glBlendColor setzen.

Grüße,
Matthias

Erst einmal danke für deine Hilfe.

Leider sind die Konstanten unbekannt. Nun lese ich, dass es die erst ab OpenGL 1.4 gibt?
In mein gl.h (C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL\GL.h) steht #define GL_VERSION_1_1 1

Somit habe ich leider eine alte Version!?
Da die OpenGL Version aber mit den GK Treibern installiert wird (?) und die neusten Treiber auch installiert sind, frage ich mich, wie ich weiter vorgehen soll.

Wird wirklich erst Version 1.1 produktiv genutzt? Oder wurde die Headerfile nicht mit den OpenGL Binäries installiert?

Vielen Dank und Grüße


Edit: Ich glaube ich nutze Fixed Function Pipeline (glBegin(GL_QUADS); etc. oder?). Shader nutze ich bisher noch nicht.
 
Zuletzt bearbeitet:
Natürlich liefert Microsoft in der standard gl.h Version 1.1 von irgendwie 199x

Die haben natürlich interesse daran, dass die Leute denken, auf Windows gäbs nur das Uralt-OpenGL

Eigentlich reichts, wenn du irgendwie glew.h includierst (zum Runterladen... einfach nach glew mal suchen... müsste auch auf opengl.org verlinkt sein), damit bekommst du so ziemlich die neusten funktionen direkt mit function pointer mit.

in nem shader würd ich die alpha-geschichte halt einfach über ne uniform-variable in den shader pumpen und im programm an sich einfach über zwei sekunden hinweg den wert von 0 auf 1 wandern lassen.

im shader müsstest du dann nur noch irgendwie gl_FragColor.a = übergebenerAlpha-Wert und gut :)


edit:

außerdem macht es meiner ansicht nach keinen großen sinn mehr, sich noch die fixed-function pipeline anzutun. Fang gleich mit dem Core-Profile an.
 
Zuletzt bearbeitet:
Zurück