由前面2篇文章,我们可以知道,只需要在paintGL()函数中修改即可。
void Widget::paintGL()//对OpenGL进行所有的设置。设置清除屏幕所用的颜色,打开深度缓存,启用smooth shading.等窗口创建之后才会被调用
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清除屏幕和深度缓存
glLoadIdentity();//重置当前的模型观察矩阵。在glLoadIdentity()调用之后,函数返回之前,添加代码来创建基本的形
//目前所做的就是将屏幕清除成前面所决定的颜色,清除深度缓存并且重置场景,仍然没绘制任何东西。
//glPolygonMode(GL_FRONT_AND_BACK ,GL_LINE );//前后面,填充方式(点point、线line、FILL)
glTranslatef(-1.5, 0.0, -6.0 );//移动的时候不是相对于屏幕中心移动,而是相对于当前所在屏幕位置
int M = 2;
int N = 2;
float **Zn = (float **)new float *[N];
for(int i=0;i<N;i++)
{
Zn[i] = new float[M];
}
glBegin(GL_POINTS);//点
glVertex3f(-0.5,-0.5,0);
glVertex3f(0.5,1,0);
glVertex3f(1,-0.5,0);
glVertex3f(-1,1,0);
glEnd();
glTranslatef(2.5, 0.0, -6.0 );
glBegin(GL_LINES);//线
glVertex3f(-1,-1,0);
glVertex3f(1,1,0);
glVertex3f(1,-1,0);
glVertex3f(-1,1,0);
glEnd();
glTranslatef(-4.5, -4.0, -6.0 );
glBegin(GL_TRIANGLES);//三角形
glVertex3f(-1,-1,0);
glVertex3f(1,1,0);
glVertex3f(1,-1,0);
glVertex3f(-1,1,0);//
glEnd();
glTranslatef(2.5, 0.0, -6.0 );
glBegin(GL_QUADS);//四边形。如果点的顺序不按某一顺序的话,存在两点之间的连线有交叉的话,出来的形状就不对。
glVertex3f(-1,1,0);
glVertex3f(1,1,0);
glVertex3f(1,-1,0);
glVertex3f(-1,-1,0);
glEnd();
glTranslatef(4.5, 0.0, -6.0 );
glBegin(GL_POLYGON);//多边形。如果点的顺序不按某一顺序的话,存在两点之间的连线有交叉的话,出来的形状就不对。
glVertex3f(-0.5,1,0);
glVertex3f(0.5,1,0);
glVertex3f(1,0,0);
glVertex3f(0.5,-1,0);
glVertex3f(-0.5,-1,0);
glVertex3f(-1,0,0);
glEnd();
}