2010-11-19 5 views
0

Ich habe Code, wo ich einen Würfel (mit 12 Dreiecken) gemacht und es bewegt sich in der Z-Richtung hin und her.Objekt rendern, ohne einen neuen Puffer zu erstellen

Gibt es eine Möglichkeit, diesen Würfel (sagen wir) 5 mal gleichzeitig an verschiedenen Positionen im Raum zu rendern. Jetzt müsste ich einen neuen Puffer für jeden Würfel erstellen, der falsch erscheint.

Antwort

3

wenn CubeObj.draw() ist Ihre Zeichenfunktion Würfel (wahrscheinlich ein Aufruf an glVertexPointer dann glDrawElements),

glPushMatrix(); //save the current matrix 
    glTranslatef(translatex, translatey, translatez); 
    //glRotatef(), glScale, etc. 

    CubeObj.draw(); 
glPopMatrix(); //restore the matrix 

die glPush/PopMatrix() Anrufe sicherzustellen, dass Transformation im Block-Befehle nur dann angewendet werden dieser bestimmte Würfel.

Sie können die Zeichenfunktion Ihres Objekts mehrmals aufrufen, ohne das Objekt zu rekonstruieren. Das heißt, Sie könnten eine andere Kopie des obigen Codes haben und die Transformationsbefehle ändern, und Sie scheinen 2 separate Würfel zu haben.

Hoffe das half.

EDIT:

stellen Sie sicher, um einen Anruf zu glLoadIdentity haben() an der Spitze Ihrer Anzeigefunktion

+0

Sie so viel Dank. Ich werde das Push/Pop-Setup ausprobieren! – Eugene

Verwandte Themen