Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 09, 2025 22:32

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Tutorial Spiegeln
BeitragVerfasst: Mi Mär 24, 2004 17:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mär 18, 2004 15:25
Beiträge: 6
Ich schaffe es nicht die Maske des Spiegelbilds in den Stencil Buffer zu zeichnen. Ein Spiegelbild zu mithilfe von glScale zu erschaffen. Stellt kein Problem dar, aber der sehe nachdem ich den Stencil Buffer einschalte nur das Orginal Objekt.

Code:
  1.  
  2.    glclearcolor(1,1,1,0);
  3.     glclear(gl_color_buffer_bit);
  4.     glclear(GL_DEPTH_BUFFER_BIT);
  5.     glclear(GL_STENCIL_BUFFER_BIT);
  6. //---------------------------------------------
  7.         glEnable(GL_CLIP_PLANE0);
  8.         glClipPlane(GL_CLIP_PLANE0, @ClipPlane);
  9. //Stencil setzen
  10.         glColorMask(False, False, False, False);
  11.         glEnable(GL_STENCIL_TEST);
  12.         glStencilFunc(GL_ALWAYS, 1, 1);
  13.         glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
  14. //DrawMirror;
  15.         glDisable(GL_DEPTH_TEST);
  16.         glDisable(GL_TEXTURE_2D);
  17.         glPushMatrix;
  18.         glScale(1,-1,1);
  19.         glTranslate(-15+side,up,0);
  20.         glColor3f(1,0,0);
  21.         w:=gluNewQuadric();
  22.         gluSphere(w,10,20,20);
  23.         glPopMatrix;
  24. //Mirror setzen
  25.         glEnable(GL_TEXTURE_2D);
  26.         glEnable(GL_DEPTH_TEST);
  27.         glColorMask(True, True, True, True);
  28.         glStencilFunc(GL_EQUAL, 1, 1);
  29.         glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
  30.         glDisable(GL_CLIP_PLANE0);
  31.         glDisable(GL_STENCIL_TEST);
  32. //Orginal Bild
  33.         glPushMatrix;
  34.         glTranslate(-15+side,up,0);
  35.         glColor3f(1,0,0);
  36.         w:=gluNewQuadric();
  37.         gluSphere(w,10,10,10);
  38.         glPopMatrix;
  39. //----------------------------------------------
  40.     OpenGLFrame1.SwapBuff;
  41.  


Die Variablen up und side sind zur Steuerung. w ist ein Pointer und Clipplane erklärt sich selber.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 25, 2004 10:43 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mär 18, 2004 15:25
Beiträge: 6
Ich muss das mit dem DrawMirror falsch verstanden haben. Das Spiegelbild ist jetzt da es wird nur nicht abgeschnitten wenn es aus dem Spiegel herausragt. Ich habe den Spiegel aus eine gl_Quads gemacht. Dann mit aktivierten Stenciltest das Spiegelbild gezeichnet und dann ohne Stenciltest das richtige Bild. Trotzdem wird das Spiegelbild außerhalb der Maske gezeichnet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 25, 2004 11:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn das da oben dein kompletter Quellcode ist, dann hast du was falsch verstanden. In DrawMirror wird nicht die gespiegelte Szene gezeichnet, sondern nur die Spiegelfläche (also dein Quad). Dort wird wie zu erkennen nämlich nur der Stencil auf "sichtbar" gesetzt wo du deine Spiegelfläche renderst.
Deine Clippingplane setzt du auch an der falschen Stelle, das sollte erst dann geschehen wenn du deine Spiegelfläche bereits im Stencil drinne hast, da es sonst sein kann das die Spiegelfläche durch den Clippingtest nicht gerendert wird.

Erst nach folgenden Zeilen Code :
Code:
  1. glColorMask(True, True, True, True);
  2. glStencilFunc(GL_EQUAL, 1, 1);
  3. glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);

darfst du dann deine gespiegelte Szene zeichnen.

Aber ich versteh auch nicht warum du da einfach im Code Sachen umpositionierst, steht doch alles Wort für Wort und warum es da ist wo es ist im Tutorial drin.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 25, 2004 11:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mär 18, 2004 15:25
Beiträge: 6
Mein Fehler in meinem OpenGL-Header war der Stencil Buffer ausgeschaltet.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]