gl problem (c++) mit lines und depth-buff
-
Hallo - bin grad dabei mich in die gl Routinen einzuarbeiten.
Ich denk das ich etwas nich verstanden hab oder so.In meiner Funktion (draw_objekt) werden neben einer sphere auch aus einem array
noch duzende linien erzeugt. Drumherum kommen noch zwei rechtecke eines rot das andre blau. Das eine oben das andre unten. (oben & unten = z achse)glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if ( pause == 0) draw_object(); glFlush();
for(int i = 0; i < 500; i++) { glPushMatrix(); glColor3f(0.5f, 0.5f, 0.8f); // glLineWidth(5); glBegin(GL_LINES); glVertex3f(obj[i][0] - 7*4,obj[i][1] - 40,obj[i][2]); glVertex3f(obj[i][3] - 7*4,obj[i][4] - 40,obj[i][5]); glEnd(); glPopMatrix(); }
Wenn ich jetzt per Mausbewegung das ganze rotieren lasse.
if ( maus_butt == 1 ) { if ( maus_x != X ) { glRotatef(maus_x-X, 0.0, 1.0, 0.0); } if ( maus_y != Y ) { glRotatef(maus_y-Y, 0.0, 0.0, 1.0); } }
dann passiert es regelmäßig das sich die lage der Linien und die im depth-buffer
verändert. Siehe Bilder. (die veränderung passiert schlagartig)
http://www.htwm.de/~vannacke/cpp/Bild1.png
http://www.htwm.de/~vannacke/cpp/Bild2.pngAlle beide bilder betrachten die scene von oben.
In jedem Bild ist das rote Rechteck unten. (sprich - weiter weg von der Kamera)
Der z-buffer zeigt das aber nicht.Reicht das schon als Beschreibung ?
Hab ich nen falschen Modus oder wie ?Grüße
-
hallo
Also wenn ich das ganze zwei drei mal gedreht hab dann passiert es zufällig das alles was ich habe an der y achse gespiegelt wird - und die im Raum liegenden Objekte werden an der [y,x]-Ebene im z-buffer andersherum Überlagert.
Grüße