AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Stencil-Buffer Z-Buffer Bohrung in Quader
Thema durchsuchen
Ansicht
Themen-Optionen

Stencil-Buffer Z-Buffer Bohrung in Quader

Ein Thema von luisk · begonnen am 16. Aug 2014 · letzter Beitrag vom 16. Aug 2014
Antwort Antwort
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#1

Stencil-Buffer Z-Buffer Bohrung in Quader

  Alt 16. Aug 2014, 14:38
Stencil-Buffer Z-Buffer Zusammenspiel
Ziel: eine Bohrung (Zylinder) in einem Quader

ich schreibe zunächst Kontur "Bohrung" in den Stencilbuffer, ohne zu zeichnen.
Delphi-Quellcode:
      glenable (GL_Stencil_Test);
       // glStencilFunc (gl_Equal,1,1);

         glstencilmask ( $01 );

         glStencilFunc ( //Bestimmt die Funktion für den Stenciltest.
                         gl_never,//func: GL_NEVER, GL_LESS, GL_LEQUAL, GL_GREATER, GL_GEQUAL, GL_EQUAL,
                                  // GL_NOTEQUAL, und GL_ALWAYS
                         1, // ref: Gibt den Referenzwert für den Stenciltest an.
                            // ref ist auf das Intervall[0, 2^n-1] beschränkt
                         1 // mask:Spezifiziert eine Maske die mit den Referenzwert
                            // und dem gespeicherten Wert UND-Verknüpft wird, bevor der Test durchgeführt wurde.
                            // Vorgabewert ist eine mit einsen gefüllte Bitmaske.
                       );
         glStencilOp ( // Die Parameter können folgende Konstanten enthalten: GL_KEEP, GL_ZERO,
                         // GL_REPLACE, GL_INCR, GL_INCR_WRAP, GL_DECR, GL_DECR_WRAP, GL_INVERT
                       GL_Replace,// fail : Legt fest, was gemacht wird, wenn der Stencil-Test fehlschlägt.
                       GL_Replace,// zfail : Legt fest, was passiert, wenn der Stencil-Test erfolgreich ist
                                  // aber der Tiefentest fehlschlägt
                       GL_Replace // zpass : Legt fest, was passiert, wenn sowohl der
                                  // Stenciltest als auch Tiefentest erfolgreich ist. I
                                  // Ist der Tiefentest deaktiviert, so gilt dieser als bestanden
                       )
über Never erreiche ich dass zunächst nicht gezeichnet wird.
Der Stencilbuffer wird zuerst mit dem Loch gefüllt.
Dann wird der Quader gezeichnet.

bis hierher funktioniert es soweit, dass die Bohrung komplett ausgespart wird,
was aber zuviel ist.

Nun will ich als nächstes den Quader zeichnen und zwar mit folgendem Ziel:
Dort, wo die Quaderanteile in Z-Richtung hinter der Bohrung liegen, soll nichts gezeichnet werden.
Wenn die Quaderanteile in Z-Richtung vor der Bohrung liegen soll gezeichnet werden.

Gibt es hierzu ein Bsp.?

Geändert von luisk (16. Aug 2014 um 15:00 Uhr)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#2

AW: Stencil-Buffer Z-Buffer Bohrung in Quader

  Alt 16. Aug 2014, 14:43
Ist das Reintriangulierens eines Loches in die Quaderfläche eine Lösung? In der GLU-Lib gibt es eine Möglichkeit zum Triangulieren.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#3

AW: Stencil-Buffer Z-Buffer Bohrung in Quader

  Alt 16. Aug 2014, 14:51
Ist das Reintriangulierens eines Loches in die Quaderfläche eine Lösung? In der GLU-Lib gibt es eine Möglichkeit zum Triangulieren.
Die Lösung soll über den Stencil- und Z-Buffer erfolgen ohne Dreieckszerlegung.

Dort, wo die Z-Koordinate des Bohrungszylindes vor den Quader-Pixeln liegt ist die Bohrung sichtbar. An diesen Stellen darf der Quader nicht gezeichnet werden.
Dort, wo die Bohrung unsichtbar ist, liegen die Quaderpixel über der Bohrung und müssen gezeichnet werden.

Ist eigentlich einfach, (wenn mans´s selber in ein Bitmap schreiben würde)
Aber wie kann man die Stencil-Fnktionen hierzu parametrieren ?

Hier wurde das Thema auch diskutiert, leider ohne Erfolg:
http://www.opengl.org/discussion_boa...fer-is-working

Geändert von luisk (16. Aug 2014 um 17:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz