![]() |
Stencil-Buffer Z-Buffer Bohrung in Quader
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:
über Never erreiche ich dass zunächst nicht gezeichnet wird.
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 ) 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.? |
AW: Stencil-Buffer Z-Buffer Bohrung in Quader
Ist das Reintriangulierens eines Loches in die Quaderfläche eine Lösung? In der GLU-Lib gibt es eine Möglichkeit zum Triangulieren.
|
AW: Stencil-Buffer Z-Buffer Bohrung in Quader
Zitat:
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: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz