2010-11-19 88 views
0

我有我制作一个立方体的代码(使用12个三角形),它在z方向上来回移动。在不创建新缓冲区的情况下渲染对象

有没有办法在空间的不同位置同时渲染这个立方体(比如说)5次。到目前为止,我将不得不为每个立方体创建一个新的缓冲区,这似乎是错误的。

回答

3

如果CubeObj.draw()是你的立方体的绘制函数(可能glVertexPointer然后glDrawElements调用),

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

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

的glPush/PopMatrix()调用确保块变换命令只适用于该特定的立方体。

您可以多次调用对象的绘图函数而无需重建对象。 也就是说,您可以拥有上述代码的另一个副本并更改转换命令,并且您似乎有2个独立的多维数据集。

希望这有助于。

编辑:

确保你在你的显示功能的顶部有glLoadIdentity()的调用

+0

谢谢你这么多。我会尝试推/流行设置! – Eugene 2010-11-19 01:48:41

相关问题