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

Aktuelle Zeit: Fr Jul 18, 2025 20:06

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Stencil-Puffer wird ignoriert
BeitragVerfasst: Mo Feb 19, 2007 02:06 
Offline
DGL Member

Registriert: Sa Feb 03, 2007 11:10
Beiträge: 26
Wohnort: Dingolfing
Morgen.

Ich versuche gerade, eine Spiegelung hinzukriegen. Ich mache das ganze mit SDL und einer Stencil-Puffergröße von 8. Mein momentaner Code:

Code:
  1.   glMatrixMode(GL_MODELVIEW);
  2.   glClear(GL_STENCIL_BUFFER_BIT);
  3.  
  4.   glColorMask(False, False, False, False);
  5.   glEnable(GL_STENCIL_TEST);
  6.   glStencilFunc(GL_ALWAYS, 1, 1);
  7.   glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
  8.   glDisable(GL_DEPTH_TEST);
  9.  
  10.   glColor3f(1, 0, 0);
  11.   glBegin(GL_QUADS);
  12.   glVertex3f(-Width/2, 0, -Depth/2);
  13.   glVertex3f(-Width/2, 0, Depth/2);
  14.   glVertex3f(Width/2, 0, Depth/2);
  15.   glVertex3f(Width/2, 0, -Depth/2);
  16.   glEnd;
  17.  
  18.   glColorMask(True, True, True, True);
  19.   glEnable(GL_STENCIL_TEST);
  20.   glStencilFunc(GL_EQUAL, 1, 1);
  21.   glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
  22.  
  23.   glPushMatrix;
  24.  
  25.   glScalef(1,-1,1);
  26.  
  27.   //Rendern sämtlicher Objekte
  28.   for I:=0 to World.Objects.Count-1 do
  29.   begin
  30.     if World.Objects[I].GetType=otVisible then
  31.       World.Objects[I].Render;
  32.   end;
  33.  
  34.   glPopMatrix;
  35.  
  36.   glDisable(GL_STENCIL_TEST);
  37.   glEnable(GL_DEPTH_TEST);
  38.   //Hier wird dann noch der Spiegel selbst gerendert und die restliche Welt nochmal ungespiegelt


Das klappt schon recht gut, nur aus irgendeinem Grund wird der Stencilpuffer einfach ignoriert, das heißt, ich sehe meine Spiegelwelt auch an Stellen, an denen der Spiegel gar nicht mehr da ist. Auch interessant: Wenn ich statt glStencilFunc(GL_EQUAL, 1, 1) etwa glStencilFunc(GL_NEVER, 1, 1) nehme, wird trotzdem die ganze Spiegelwelt angezeigt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 19, 2007 15:27 
Offline
DGL Member

Registriert: Sa Feb 03, 2007 11:10
Beiträge: 26
Wohnort: Dingolfing
Fixed. ERST StencilBuffer-Größe setzen, DANN Videomode initialisieren.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.007s | 14 Queries | GZIP : On ]