2.7 OpenGL和GLUT坐标系之间的差异
对于二维问题,在OpenGL中,x轴和y轴的正方向分别为向右和向上。对于GLUT中使用的输入函数和窗口系统,x轴和y轴的正方向分别为向右和向下。
当我们使用来自鼠标的输入时,需要同时考虑两种坐标系,这很容易产生混淆。
2.17 状态的保存
OpenGL状态决定了图元的绘制方式。矩阵堆栈(matrix stack)可用来保存投影矩阵和模型矩阵。每种堆栈只能容纳相应类型的矩阵。可用函数glPushMatrix()和glPopMatrix()使矩阵入栈或出栈。所使用的矩阵由当前矩阵模式glMatrixMode(GL_MODELVIEW或GL_PROJECTON)决定。注意,入栈和出栈操作必须成对使用;一次出栈必须与一次入栈对应。
OpenGL依据相关性将其属性划分为20组。我们可将多组属性或全部属性(GL_ALL_ATTRIBUTE_BITS)通过函数glPushAttrib()压入属性堆栈中,恢复这些状态则使用函数glPopAttrib()。