矩阵的压栈与出栈
让两个重合的三角形,分开
程序运行截图如下:
伪代码如下:
void Init() {
//设置当前矩阵
glMatrixMode(GL_PROJECTION); //设置为投影矩阵(对矩阵造成影响的代码,都会影响当前矩阵)
//第一个参数是垂直方面的视角,第二个是宽和高的比,第三个是最近可以看到的距离,第四个是最远距离
gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f);
glMatrixMode(GL_MODELVIEW);//把当前矩阵切换为模型视图矩阵
glLoadIdentity(); //加载一个单位矩阵
}
void Draw() {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity(); //把模型矩阵换位单位矩阵
glPushMatrix();
glTranslatef(-1.0f, 0.0f, 0.0f);
glBegin(GL_TRIANGLES);
glColor4ub(255, 0, 0, 255); glVertex3f(-0.5f, -0.25f, -5.0f);
glColor4ub(0, 0, 255, 255); glVertex3f(0.5f, -0.25f, -5.0f);
glColor4ub(0, 255, 0, 255); glVertex3f(0.0f, 0.5f, -5.0f);
glEnd();
glPopMatrix();
glPushMatrix();
glTranslatef(1.0f, 0.0f, 0.0f);
glBegin(GL_TRIANGLES);
glColor4ub(255, 0, 0, 255); glVertex3f(-0.5f, -0.25f, -5.0f);
glColor4ub(0, 0, 255, 255); glVertex3f(0.5f, -0.25f, -5.0f);
glColor4ub(0, 255, 0, 255); glVertex3f(0.0f, 0.5f, -5.0f);
glEnd();
glPopMatrix();
}