`
如沐春风的小妮
  • 浏览: 68675 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

opengl学习(三)----绘制简单图形(一)

阅读更多
    今天说一说几种简单的图元。
    所有的几何图元都是根据它们的顶点来描绘的。而顶点就是它们在屏幕上的坐标位置。
   我喜欢把这几个简单的图元称为点线面。
   点,可以看到一个顶点;
   线,就是两个顶点指定的一条有限长度的线段;
   面,其实更准确讲是一个凸多边形。opengl里所讲的多边形是内部用颜色填充的,视觉上称为面我个人认为是更贴近的。当然,多边形也是由指定的顶点组成的。
   需要注意的是,要想被opengl按照设计被绘制必须正确的认识到,所谓的多边形是顶点都处于一个平面上,凸多边形。凸多边形不能理解的,请问度娘。。。
    来看一个例子:
glBegin(GL_POLYGON);
    glVertex2f(0.0, 0.0);
    glVertex2f(0.0, 3.0);
    glVertex2f(4.0, 3.0);
    glVertex2f(6.0, 1.5);
    glVertex2f(4.0, 0.0);
glEnd();

    先不去关心代码本身,这段代码最终的结果是要指定5个顶点绘制一个凸五边形。注意,不是5条线段而是一个凸五边形的平面。
    不管是点线面的哪一种,都是需要指定一组顶点的。如何判定顶点指定的开始和结束就是glBegin和glEnd的工作。
引用
void glBegin(Glenum mode);
标志着一个顶点数据列表的开始,它描述了一个几何图元。mode参数指定了图元的类型。
void glEnd(void);
标志着一个顶点数据列表的结束。

mode设置的不同,代表着将要绘制的图元也不同。下面这个表就是图元的名称和含义:
值                                      含义
GL_POINTS                   单个的点
GL_LINES                    一对顶点被解释为一条直线
GL_LINE_STRIP               一系列的连接直线
GL_LINE_LOOP                和上面相同,但第一个顶点和最后一个顶点彼此相连
GL_TRIANGLES                3个顶点被解释为一个三角形
GL_TRIANGLES_STRIP          三角形的连接串
GL_TRIANGLES_FAN            连接成扇形的三角形系列
GL_QUADS                    4个顶点被解释为一个四边形
GL_QUADS_STRIP              四边形的连接串
GL_POLYGON                  简单的凸多边形的边界


    试想着,如果将glBegin(GL_POLYGON)修改为glBegin(GL_POINTS),绘制出来的将是什么图形呢? 哈哈,那就是5个点而已么。
    上面那段代码还有一个最为重要的函数,那就是顶点函数只有通过顶点函数指定了绘制图形所需要的顶点,才能去绘制我们需要的图形。
    下面看一下顶点函数的原形:
引用
void glVertex[234]{sifd}(TYPE coords);
glVertex[234]{sifd}(const TYPE *coords);
指定了一个用于描述几何物体的顶点。可以选择这个函数的适当版本,即可以为一个顶点提供多达4个的坐标(x,y,z,w),也可以只提供2个坐标(x,y)。如果选择的函数版本并没有显式地指定z或者w,z就会当作0,w则默认为1。glVertext*()函数只有当它位于glBegin()和glEnd()之间时才有效。

     注:sifd是指顶点数据的类型。
    以上就是简单图元的简单绘制方法。更多更复杂的图形及函数后续会陆续涉及到。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics