如何描绘空间上的一个物体,在图形学上有很多方法,OpenGL通过将物体抽象为笛卡尔坐标系下点、线段、多边形的集合,再将点、线段、多边形等通过在函数glBegin()与glEnd()之间的一系列顶点数据,绘制出图形还原物体。
OpenGL通过glBegin()与glEnd()函数完成点、线、三角形、四边形及多边形的绘制,glBegin(GLenum)函数原型如下:
glBegin(GLenum)| ... glEnd()
参数GLenum有以下10个参数:
GL_POINTS:表示将要绘制点
GL_LINES:表示函数开始绘制线
GL_LINE_STRIP:表示函数将开始绘制折线
GL_LINE_LOOP:表示函数将开始绘制闭合曲线
GL_TRIANLES:表示函数开始绘制三角形
GL_TRIANLE_STRIP:表示函数将开始绘制三角形片
GL_TRIANLE_FAN:表示函数将开始绘制三角形扇
GL_QUADS:表示函数开始绘制四边形
GL_QUAD_STRIP:表示函数开始绘制多边形片
GL_POLYGON:表示函数绘制多边形
1、绘制二维的点:
glBegin(GL_POINTS); glVertex2f(0.0f,0.0f); glEnd();
在初始化OPENGL运行环境后,如上代码,将绘制一个2维的点,点的坐标为(0,0),OpenGL中绘制的二维的点实际和三维点一样,不过二维的点是将笛卡尔坐标的z轴定位在原点,二维点的坐标也就是(x,y,0)
2、绘制线:
glBegin(GL_LINES); glVertex2f(0.0f,0.0f); glVertex2f(0.01f,-0.4f); glEnd();
OpenGL的任何图形都是基于点,如上绘制2个点,链接成一个直线,当然绘制以后可能出现锯齿,这样就需要进行一下反走向处理。
GL_LINES:绘制两条线段
GL_LINE_STRIP:绘制连续折线
GL_LINE_LOOP:绘制闭合曲线
3种绘制方式会产生不同的效果,具体在vc环境下测试即可看见。
3、绘制面
绘制三角形:
glBegin(GL_TRIANGLES); glVertex3f(0.0f,0.0f,0.0f); glVertex3f(1.0f,0.0f,0.0f); glVertex3f(0.0f,1.0f,0.0f); glEnd();
如上的代码将会在笛卡尔坐标中根据三个点绘制一个三角形,三角形的三个点坐标分别为(0,0,0)、(1,0,0)、(0,1,0)