Перевести ранее нарисованные элементы (OpenGL)

Как мне преобразовать ранее нарисованные элементы? Я нарисовал на экране грубые 4 миллиона вершин, и я хотел бы перевести их после того, как они нарисованы. Я бы предпочел не перерисовывать их каждый раз, когда я хочу перевести их (4 миллиона!)

Вот соответствующий код.

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

0

Решение

Это невозможно, ваши позиции вершин внутренне умножаются на матрицу преобразования, чтобы получить конечную позицию, которая рисуется на экране.

Так что, если вы попытаетесь изменить матрицу после рисования, это не окажет никакого влияния на нарисованные вершины, и, в общем-то, это так.

Чтобы решить вашу проблему, просто преобразуйте ее перед рисованием … это стандартным способом, другого способа сделать не существует.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]