C++ opengl 矩阵的压栈与出栈

矩阵的压栈与出栈

让两个重合的三角形,分开

程序运行截图如下:

伪代码如下:

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();
}

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/81176021