Wir wechseln danach zur zweiten Textur-Unit und machen ähnliche Einstellungen, aktivieren zusätzlich jedoch Blending für diese Funktion.
Ich habe folgendermaßen versucht das Beispiel mit dem Titel "Der Überläufer" mit Multitexturing nachzumachen, indem ich das Blending aktiviere wenn die 2. Texturunit (Unit 1) aktiv ist:
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
erhm... Ist es nicht so, dass Blending für eine Primitivie und nicht für eine textur gilt?
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Edit: Jetzt wo ich mal genauer drüberschaue, fällt mir erst der Zusammenhang zu dem was ich vorhin schon gesagt habe auf: Du kannst 1 Quad nur 1 Alphacolor-Wert zuweisen, brauchst aber 2 unterschiedliche für jede Textur! Also führt der einzige Weg dieses Blendeffekts wirklich über 2 Quads oder über 2 Texturen mit vorher berechneten und geladenem Alphakanal.
Genau, deswegen habe ich ja auch versucht die gesamten Informationen nur aus dem ersten alpha Wert (Source) zu gewinnen und habe
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
verwendet.
Dies müste doch genau das tun was ich möchte, für jeden Eckpunkt den Alphawert für textureinheit 1 genau invertiert zu textureinheit 0 angeben.
(Oder habe ich da was falsch verstanden)?
Es würde ja schon reichen die Textur in Textureinheit 0 komplett ohne Transparenz zu zeichnen.
Und im Tutorial klingt es so, als ob man das könnte (Das Blending nur für eine bestimmte Textureinheit einzuschalten, denn)
Es steht folgender Satz genau so im Tutorial:
Zitat:
Wir wechseln danach zur zweiten Textur-Unit und machen ähnliche Einstellungen, aktivieren zusätzlich jedoch Blending für diese Funktion.
Es steht nur leider nicht in dem Tutorial, wie man die Blending funktion gezielt für Textureinheit 1 aktiviert.
Für mich klingt der Satz aber so als ob es gehen müßte. Nur wie?
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Andreas XXL hat geschrieben:
Genau, deswegen habe ich ja auch versucht die gesamten Informationen nur aus dem ersten alpha Wert (Source) zu gewinnen und habe glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); verwendet. Dies müste doch genau das tun was ich möchte, für jeden Eckpunkt den Alphawert für textureinheit 1 genau invertiert zu textureinheit 0 angeben. (Oder habe ich da was falsch verstanden)?
glBlendFunc: Source = Quelle ist das, was du hinzufügst; Destination = Ziel ist der Framebuffer, also das, was schon gezeichnet ist.
Mit der Funktion glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); sagst du also, übernehme soviel von der Quelle/Textur, wie der Alphawert der Quelle/Textur ist, übernehme soviel vom FrameBuffer, wieviel 1-Alphawert der Quelle ist (quasi den Rest).
Etwas mathematischer:
Neuer FrameBuffer = Textur * Textur.Alpha + FrameBuffer * (1 - Textur.Alpha)
Von Blending nur für eine TextureUnit hab ich leider keine Ahnung.
Danach kann man über leider etwas komplizierte Parameter an glTexEnv angeben wie sich die Texturen der TMUs miteinander verhalten sollen, kleines Beispiel :
Mitglieder in diesem Forum: Majestic-12 [Bot] 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.