glPushMatrix, glPopMatrix - додати або витягнути з стеку матриць.
C специфікація
void glPushMatrix (void) ;
void glPopMatrix (void) ;
Опис
Існує стек матриць для кожного режиму матриць. У режимі GL_MODELVIEW, глибина стеку повинна бути не меншою ніж 32 позиції. У режимах GL_COLOR, GL_PROJECTION i GL_TEXTURE, глибина стеку повинна бути не меншою 2 позицій. Поточна матриця у будь-якому режимі являється матрицею на вершині відповідного стеку матриць.
Команда glPushMatrix вкладає поточну матрицю в стек, і дублює її. Тобто, після виклику команди glPushMatrix, матриця на вершині стеку являється ідентичною поточній.
Команда glPopMatrix витягує матрицю з відповідного стеку матричного, замінюючи поточну матрицю матрицею розміщеною нижче у стеку.
За умовчанням, кожен з стеків містить одну матрицю - матрицю ідентичності.
Вважається, що додавання у переповнений стек матриць або витягування з стеку, який містить одну матрицю являється помилкою. У будь-якому випадку, встановлюється прапорець помилки і жодні зміни не вносяться у стан графічної бібліотеки.
Помилки
GL_STACK_OVERFLOW - генерується коли викликається команда glPushMatrix і відповідний стек матриць повністю заповнено.
GL_STACK_UNDERFLOW - генерується коли викликається команда glPopMatrix і відповідний стек матриць містить тільки одну матрицю.
GL_INVALID_OPERATION - генерується коли викликаються команди glPushMatrix або glPopMatrix між викликами glBegin і glEnd.
Пов'язані виклики
glGet з параметром GL_MATRIX_MODE
glGet з параметром GL_COLOR_MATRIX
glGet з параметром GL_MODELVIEW_MATRIX
glGet з параметром GL_PROJECTION_MATRIX
glGet з параметром GL_TEXTURE_MATRIX
glGet з параметром GL_COLOR_MATRIX_STACK_DEPTH
glGet з параметром GL_MODELVIEW_STACK_DEPTH
glGet з параметром GL_PROJECTION_STACK_DEPTH
glGet з параметром GL_TEXTURE_STACK_DEPTH
glGet з параметром GL_MAX_MODELVIEW_STACK_DEPTH
glGet з параметром GL_MAX_PROJECTION_STACK_DEPTH
glGet з параметром GL_MAX_TEXTURE_STACK_DEPTH
Перегляньте також
glFrustum, glLoadIdentity, glLoadMatrix, glLoadTransposeMatrix, glMatrixMode, glMultMatrix, glMultTransposeMatrix, glOrtho, glRotate, glScale, glTranslate, glViewport, Вступ до OpenGL (Open Graphics Library) - відкрита графічна бібліотека
Оригінал: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPushMatrix.xml