Hallo,
Ich zeichne den Übergang zwischen zwei Materialien (=Textur+Detailmap), indem ich zuerst das untere Dreieck zeichne und dann das andere mit glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) und entsprechenden Alpha-Werte drüber blende.
Beim Blending muss ja bekanntlich GL_LIGHTING ausgeschalten werden (warum eigentlich?). Das Problem ist jetzt, dass ich das überlagerte Dreieck aber auch gerne beleuchtet haben will.
Wie mach ich das?
edit: habs jetzt mit nem 3. rendering pass gelöst...
Beim Blending muss ja bekanntlich GL_LIGHTING ausgeschalten werden (warum eigentlich?). Das Problem ist jetzt, dass ich das überlagerte Dreieck aber auch gerne beleuchtet haben will. Wie mach ich das?
was du vermutlich meinst ist daß du den Alpha-Wert mit glColor4x setzen willst, glColor aber bei aktiviertem GL_LIGHTING wirkungslos wird (?).
Mit diesem Problem hatte ich auch zu kämpfen, die Lösung ist offenbar die Funktion glMaterial. Die ist dafür vorgesehen, bei aktivem Lighting Materialeigenschaften von Objekten (genauer gesagt deren Reaktion auf Beleuchtung) festzulegen. Einen mit z.B.
Code:
glColor4f(1.0, 1.0, 1.0, 0.75);
vergleichbaren Effekt kannst du durch
Code:
var mat_diffuse : array[1..4] of GLfloat;
mat_diffuse[4] := 0.75; // alpha-value
glMaterial4f(GL_DIFFUSE, mat_diffuse);
erreichen (für die Richtigkeit der Syntax kann ich nicht garantieren, hab das bislang nur in C/C++ gemacht ). Du legst damit fest, wie die RGBA-Anteile von diffusem Licht reflektiert werden.
Edit: BTW würde mich mal deine Lösung mit dem 3. Renderpass (wieso eigentlich 3.? Hattest du vorher schon 2?) interessieren, könntest du die mal posten?
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.