OpenGL学习五——绘制几何体

1、基本图元
      OpenGL中几何图元包括点、直线以及多边形,其中多边形特指简单凸多边形。它们都是用顶点集合来描述的,要指定定点可以使用函数glVertex*()。
      绘制几何图元时,需要在glBegin和glEnd的之间指定定点数据和图元类型。图元类型主要有:
          点:GL_POINTS
          直线:GL_LINES\GL_LINE_STRIP\GL_LINE_LOOP
          三角形:GL_TRIANGLES\GL_TRIANGLE_STRIP\GL_TRIANGLE_FAN
          四边形:GL_QUADS\GL_QUAD_STRIP
         多边形:GL_POLYGON
     特别说明下三角形、四边形的几种绘图方式:
        GL_TRIANGLES:按顶点顺序每三个点绘制一个三角形
        GL_TRIANGLE_STRIP:按顶点顺序绘制一个三角形带,依次使用n、n+1、n+2(n>0)绘制每一个三角形,这里要求按一定顺序绘制,以保证三角形的方向相同,从而确保三角形带可组成表面的一部分。这个要求十分关键,否则画出来的图形与期望的有很大差别。
       GL_TRIANGLE_FAN:按顶点顺序绘制一个三角形扇,绘制三角形时使用1、n+1、n+2三个顶点,其它与GL_TRIANGLE_STRIP相同。
     GL_QUAD_STRIP:按顶点顺序绘制四边形带,绘制四边形时使用n、n+1、n+3、n+2(n>0)顶点,其他与GL_TRIANGLE_STRIP相同。

2、顶点数组
   OpenGL提供了定点数组函数,让开发者只需使用几个数组即可指定大量与定点相关的数据,并且只需要使用几个函数便能存取这些数据。使用顶点数组来存取数据可提高应用程序的性能。使用顶点数组来渲染几何体包括三个步骤:
   (1)enable顶点数组:用于存储顶点座标、面法线、RGBA颜色、辅助颜色、颜色索引、雾座标、纹理座标以及多边形边界边标记。主要函数:glEnableClientState/glDisableClientState。
   (2)顶点数据存入顶点数组:对数组的存取是根据它们在内存单元地址(即指向内存单元的指针)进行的。在客户端/服务器模式下,数据存储在客户的地址空间中。主要函数:glVertexPointer/glColorPointer/glNormalPointer/glTexCoordPointer等。
   (3)使用数据绘制几何体:OpenGL通过对指针解除引用来获得被启用的数组中的数据。在客户端/服务器模式下,数据被传递到服务器的地址空间中。主要函数:glDrawArrays(绘制一系列相邻的数组顶点元素)/glDrawElements(绘制由顶点索引数组决定的数组顶点数据),这两个函数详解见:http://blog.csdn.net/ocean2006/article/details/6892608

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章