Qt + OpenGL 教程(四):点、线、三角形、四边形、多边形

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值