在不创建新缓冲区的情况下渲染对象

时间:2010-11-19 01:37:03

标签: android opengl-es

我有代码,我制作了一个立方体(使用12个三角形),它在z方向上来回移动。

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

1 个答案:

答案 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()