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.png

    Alle 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


Anmelden zum Antworten