2010-11-19 12 views
0

J'ai un code où j'ai créé un cube (en utilisant 12 triangles) et il se déplace dans les deux directions dans la direction z.Rendre un objet sans créer un nouveau tampon

Y at-il un moyen de rendre ce cube (disons) 5 fois simultanément juste à des positions différentes dans l'espace. A partir de maintenant, je devrais créer un nouveau tampon pour chaque cube, ce qui semble faux.

Répondre

3

si CubeObj.draw() est votre fonction de tirage de cube (probablement un appel à glVertexPointer puis glDrawElements),

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

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

les appels glPush/PopMatrix() veiller à ce que la transformation des commandes dans le bloc ne sont appliquées à ce cube particulier.

Vous pouvez appeler la fonction de dessin de votre objet plusieurs fois sans reconstituer l'objet. C'est-à-dire, vous pourriez avoir une autre copie du code ci-dessus et changer les commandes de transformation, et vous sembleriez avoir 2 cubes séparés.

J'espère que cela a aidé.

EDIT:

assurez-vous que vous avez un appel à glLoadIdentity() en haut de votre fonction d'affichage

+0

Merci beaucoup. Je vais essayer la configuration push/pop! – Eugene