Как мне преобразовать ранее нарисованные элементы? Я нарисовал на экране грубые 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
Это невозможно, ваши позиции вершин внутренне умножаются на матрицу преобразования, чтобы получить конечную позицию, которая рисуется на экране.
Так что, если вы попытаетесь изменить матрицу после рисования, это не окажет никакого влияния на нарисованные вершины, и, в общем-то, это так.
Чтобы решить вашу проблему, просто преобразуйте ее перед рисованием … это стандартным способом, другого способа сделать не существует.
Других решений пока нет …