我有代码,我制作了一个立方体(使用12个三角形),它在z方向上来回移动。
有没有办法在空间的不同位置同时渲染这个立方体(比如说)5次。截至目前,我将不得不为每个多维数据集创建一个新缓冲区,这似乎是错误的。
答案 0 :(得分: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()