美文网首页
glBegin(GLenummode) glEnd -ANDST

glBegin(GLenummode) glEnd -ANDST

作者: writeSpace | 来源:发表于2017-11-22 10:47 被阅读48次

    函数原型:

    void glBegin(GLenummode)

    void glEnd(void)

    参数说明:

    mode:创建图元的类型。可以是以下数值

    GL_POINTS:把每一个顶点作为一个点进行处理,顶点n即定义了点n,共绘制N个点

    GL_LINES:把每一个顶点作为一个独立的线段,顶点2n-1和2n之间共定义了n条线段,总共绘制N/2条线段

    GL_LINE_STRIP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,第n和n+1个顶点定义了线段n,总共绘制n-1条线段

    GL_LINE_LOOP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,然后最后一个顶点和第一个顶点相连,第n和n+1个顶点定义了线段n,总共绘制n条线段

    GL_TRIANGLES:把每个顶点作为一个独立的三角形,顶点3n-2、3n-1和3n定义了第n个三角形,总共绘制N/3个三角形

    GL_TRIANGLE_STRIP:绘制一组相连的三角形,对于奇数n,顶点n、n+1和n+2定义了第n个三角形;对于偶数n,顶点n+1、n和n+2定义了第n个三角形,总共绘制N-2个三角形

    GL_TRIANGLE_FAN:绘制一组相连的三角形,三角形是由第一个顶点及其后给定的顶点确定,顶点1、n+1和n+2定义了第n个三角形,总共绘制N-2个三角形

    GL_QUADS:绘制由四个顶点组成的一组单独的四边形。顶点4n-3、4n-2、4n-1和4n定义了第n个四边形。总共绘制N/4个四边形

    GL_QUAD_STRIP:绘制一组相连的四边形。每个四边形是由一对顶点及其后给定的一对顶点共同确定的。顶点2n-1、2n、2n+2和2n+1定义了第n个四边形,总共绘制N/2-1个四边形

    GL_POLYGON:绘制一个凸多边形。顶点1到n定义了这个多边形。

    函数说明:

    glBegin和glEnd函数限定了一组或多组图元的定点定义。

    3用法小结

    1.在glBegin()和glEnd()之间可调用的函数

    函数 函数意义

    glVertex*() 设置顶点坐标

    glColor*() 设置当前颜色

    glIndex*() 设置当前颜色表

    glNormal*() 设置法向坐标

    glEvalCoord*() 产生坐标

    glCallList(),glCallLists() 执行显示列表

    glTexCoord*() 设置纹理坐标

    glEdgeFlag*() 控制边界绘制

    glMaterial*() 设置材质

    表7-2 在glBegin()和glEnd()之间可调用的函数

    glVertex3f()表示了该函数属于 gl库,参数是三个float型参数指针。我们用glVertex*()来表示这一类函数。

    基本库

    2.几何图元类型和说明

    类型 说明

    GL_POINTS 单个顶点集

    GL_LINES 多组双顶点线段

    GL_POLYGON 单个简单填充凸多边形

    GL_TRIANGLES 多组独立填充三角形

    GL_QUADS 多组独立填充四边形

    GL_LINE_STRIP 不闭合折线

    GL_LINE_LOOP 闭合折线

    GL_TRIANGLE_STRIP 线型连续填充三角形串

    GL_TRIANGLE_FAN 扇形连续填充三角形串

    GL_QUAD_STRIP 连续填充四边形串

    4注意事项

    glBegin()与glEnd()函数使用注意点:

    在OpenGL最初的定义中,几何对象数据的输入是通过调用glBegin()和glEnd()接口对来实现的。glBegin()的参数表示其下所接收的数据是何种类型,如点,线段,三角型,扇形三角行,多边形等等。

    而如glTranslatef(), glScalef(), glRotatef()等接口的作用是对当前模型空间进行几何转换。如glTranslatef(1,2,3);表示把模型的世界坐标原点从当前位置(系统总认为是(0,0,0))转到起相对位置(1,2,3)。注意,OpenGL空间使用的是右手系的定义,与屏幕水平方向一致,并方向向右的是x轴;与屏幕方向垂直方向一致,并方向向上的是y轴;与屏幕屏幕垂直,方向向外的是z轴。

    glTranslatef()等此类几何转换接口在glBegin()和glEnd()之间是无效的。因此,如果想对模型的位置进行转换,要在调用glBegin()和glEnd()接口对之前行处理。这是许多初学者特别容易犯错的地方,而且这个错误不容易找出来。

    例如,以下的代码,并不会把模型的位置进行转移:

    glBegin(GL_TRIANGLES)

    glTranslatef(1,2,3);

    render model......

    glEnd()

    而应该这样调用:

    glTranslatef(1,2,3);

    glBegin(GL_TRIANGLES)

    render model......

    glEnd()

    文章源自于

    相关文章

      网友评论

          本文标题:glBegin(GLenummode) glEnd -ANDST

          本文链接:https://www.haomeiwen.com/subject/xkdnvxtx.html