glPushMatrix
и glPopMatrix
предназначены для сохранения / восстановления выбранной в данный момент матрицы. Он используется, например, для подсетей (например, рука робота), где вам нужно вернуться в состояние корневой подсетки ...
Что вы описываете, для чего glMatrixMode
. Таким образом, ваш код должен выглядеть следующим образом:
glMatrixMode(GL_PROJECTION);
// here your stuff for setting projection
glMatrixMode(GL_MODELVIEW);
// here your stuff for setting modelview
Вы должны вызывать glMatrixMode
перед каждым блоком кода, который манипулирует матрицей. Не ожидайте, что текущая матрица настроена на то, что вы установили в последний раз. Это приводит к путанице позже ... например, многие алгоритмы рисования изменяют вид модели и / или матрицы текстур на ходу, и в вашем коде вы можете получить что-то вроде этого:
glMatrixMode(GL_MODELVIEW);
// here your stuff for setting modelview
glMatrixMode(GL_PROJECTION);
// here your stuff for setting projection
object1.draw();
// and here the current matrix could be changed from the object1.draw()