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:
glMatrixMode(GL_MODELVIEW);
glClear(GL_STENCIL_BUFFER_BIT);
glColorMask(False,False,False,False);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_ALWAYS,1,1);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
glDisable(GL_DEPTH_TEST);
glColor3f(1,0,0);
glBegin(GL_QUADS);
glVertex3f(-Width/2,0,-Depth/2);
glVertex3f(-Width/2,0, Depth/2);
glVertex3f(Width/2,0, Depth/2);
glVertex3f(Width/2,0,-Depth/2);
glEnd;
glColorMask(True,True,True,True);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_EQUAL,1,1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glPushMatrix;
glScalef(1,-1,1);
//Rendern sämtlicher Objekte
for I:=0to World.Objects.Count-1do
begin
if World.Objects[I].GetType=otVisible then
World.Objects[I].Render;
end;
glPopMatrix;
glDisable(GL_STENCIL_TEST);
glEnable(GL_DEPTH_TEST);
//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.
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.