翻译以前绘制的元素(OpenGL)

时间:2013-07-27 19:56:29

标签: c++ opengl translate-animation

如何转换以前绘制的元素?我已经在屏幕上绘制了一个粗糙的400万个顶点,我想在它们被绘制后翻译它们。每次我想翻译时我都不想重绘它们(400万!)

这是相关代码。

glOrtho(0, 1024, 0, 576, 0, -4096);
glTranslatef(-512, -288, 512);
glRotatef(45, 1, 0, 0);
glTranslatef(512, 0, -512);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.F, 1.F, 1.F);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_INT, 0, &vertices[0]);
glDrawElements(GL_QUADS, vertexIndex.size(), GL_UNSIGNED_INT, &vertexIndex[0]);
glDisableClientState(GL_VERTEX_ARRAY);
// I would like to translate here

1 个答案:

答案 0 :(得分:3)

这是不可能的,您的顶点位置在内部与变换矩阵相乘,以获得在屏幕上绘制的最终位置。

因此,如果你试图在绘制后更改矩阵,它对绘制的顶点没有任何影响,并且就这样做了。

要解决你的问题,只需在绘制之前对其进行转换......这是标准方式,没有其他方法可以做到。