OpenGL学习笔记(三)

OpenGL绘制

清除窗口

在计算机中,保存图片的内存通常被计算机所绘制的前一幅图像所填充,因此在绘制新场景之前,一般需要把它清除为某种背景颜色。

     void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha);

设置当前清除颜色,用于清除RGBA模式下的颜色缓冲区。其中red,green,bluealpha值范围限定在[0,1],默认的清除颜色是(0,0,0,0),也就是黑色。

    void glClear(GLbitfield mask);

用当前的缓冲区清除值清除指定的缓冲区。mask参数值表如下所示(若要清除多个缓冲区则运用位运算or)

    缓冲区                 名称

    颜色缓冲区           GL_COLOR_BUFFER_BIT

    深度缓冲区           GL_DEPTH_BUFFER_BIT

    累积缓冲区           GL_ACCUM_BUFFER_BIT

    模板缓冲区           GL_STENCIL_BUFFER_BIT

下面用红色清除窗口:

    glClearColor(1.0,0.0,0.0,0.0);

    glClear(GL_COLOR_BUFFER_BIT);

第一行代码把清除颜色设置为红色,第二行代码把整个窗口清除为当前清除颜色。

 

强制绘图

    void glFlush(void);

强制以前发出的OpenGL命令开始执行,因此保证它们能够在有限的时间内完成。

 

画点

点:可以用一组称为顶点的浮点数表示。

    glBegin(GL_POINTS);     //选择点作为图元

         glVertex3f(0.0f,0.0f,0.0f);  //指定一个点

         glVertex3f(50.0f,50.0f,50.0f);  //指定另外一个点

    glEnd();                  //完成绘点

glBegin的参数GL_POINTS告诉OpenGL接下来的顶点将被用来画点。这里列出了2个顶点,它们将被解释为2个特定的点,并且都将被绘制。

这里有与glBeginglEnd有关的一个重要概念:我们可以在它们之间列出多个图形,只要它们是相同类型的图元。即使用一个glBegin/glEnd序列可以随自己所愿包含许多个图元。

    1. void glBegin(GLenum mode);

标志着一个顶点数据列表的开始,它描述了一个几何图元。mode参数指定了图元的类型,它可以下列值之一:

    值                        含义

    GL_POINTS         单个的点

    GL_LINES          一对顶点被解释为一条直线

    GL_LINE_STRIP   一系列的连接直线

    GL_LINE_LOOP   和上面相同,但第一个顶点和最后一个顶点彼此相连

    GL_TRIANGLES   3个顶点被解释为一个三角形

    GL_TRIANGLE_STRIP      三角形的连接串

    GL_TRIANGLE_FAN         连接成扇形的三角形系列

    GL_QUADS                        4个顶点被解释为一个四边形

    GL_QUAD_STRIP              四边形的连接串

    GL_POLYGON                   简单的凸多边形的边界

    2. void glEnd(void);

标志着一个顶点数据列表的结束

 

画直线

直线:OpenGL中,直线这个术语表示一段线段,而还是数学意义上的在两端无限延伸的直线。

    glBegin(GL_LINES);    

          glVertex3f(0.0f,0.0f,0.0f); 

          glVertex3f(50.0f,50.0f,50.0f); 

    glEnd();                 

上面代码在点(0,0,0)(50,50,50)之间画了一条直线。注意,如果指定了奇数个顶点,则最后一个顶点会被忽略。

 

画多边形

多边形:由线段构成的单闭合环,其中线段是由它们的端点位置的顶点指定的。一般而言,多边形可能非常复杂。因此,OpenGL对基本多边形的构成进行了限制。首先,OpenGL多边形的各条边不能相交。其次,OpenGL多边形必须是凸多边形,也就是不存在内陷的部分。准确地说,在多边形的内部任意取两个点,如果连接这两点的线段都在这个多边形的内部,那么这个多边形就是凸多边形

    glBegin(GL_ TRIANGLES);     //三角形也是多边形之一

          glVertex3f(0.0f,0.0f,0.0f); 

          glVertex3f(0.0f,50.0f,0.0f); 

          glVertex3f(50.0f,0.0f,0.0f);

    glEnd();

上面代码绘制了一个三角形,如果指定了绘图颜色的话,则该三角形将用该颜色进行填充。

由上可见,如果想要绘制图元时,先在glBegin中设置好想要的图元类型,然后将图形顶点按顺序排列即可(在OpenGL中,所有几何物体最终都描述成一组有序的顶点)。当然,在绘制图元时也可以控制它们的细节,如点的宽度、直线的宽度等。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值