在不创建新缓冲区的情况下渲染对象
问题描述:
我有我制作一个立方体的代码(使用12个三角形),它在z方向上来回移动。在不创建新缓冲区的情况下渲染对象
有没有办法在空间的不同位置同时渲染这个立方体(比如说)5次。到目前为止,我将不得不为每个立方体创建一个新的缓冲区,这似乎是错误的。
答
如果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()的调用
谢谢你这么多。我会尝试推/流行设置! – Eugene 2010-11-19 01:48:41