zoukankan      html  css  js  c++  java
  • glBegin()使用小结

     

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

    函数 函数意义
    glVertex*() 设置顶点坐标
    glColor*() 设置当前颜色
    glIndex*() 设置当前颜色表
    glNormal*() 设置法向坐标
    glCoord*() 产生坐标
    glCallList(),glCallLists() 执行显示列表
    glTexCoord*() 设置纹理坐标
    glEdgeFlag*() 控制边界绘制
    glMaterial*() 设置材质

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

    几何图元类型和说明

    类型 说明
    GL_POINTS 单个顶点集
    GL_LINES 多组双顶点线段
    GL_POLYGON 单个简单填充凸多边形
    GL_TRAINGLES  多组独立填充三角形
    GL_QUADS 多组独立填充四边形
    GL_LINE_STRIP 不闭合折线
    GL_LINE_LOOP 闭合折线
    GL_TRAINGLE_STRIP 线型连续填充三角形串
    GL_TRAINGLE_FAN 扇形连续填充三角形串
    GL_QUAD_STRIP 连续填充四边形串


     
     实例如下所示:

    // OpenGLDemo.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include <GL/glut.h>
    #include <math.h>
    const int n = 1000;
    const GLfloat R = 0.5f;
    const GLfloat Pi = 3.1415926536f;
    const GLfloat factor = 0.1f;
    void myDisplay(void)

    {
    ///第一个程序----矩形
    //glClear(GL_COLOR_BUFFER_BIT);
    //glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
    //glFlush();

    ///第二个程序----圆
    //int i;
    //glClear(GL_COLOR_BUFFER_BIT);
    //glBegin(GL_POLYGON);//有顶点就必须要有glBegin() glEnd();
    //for(i=0; i<n; ++i)
    // glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i));
    //glEnd();
    //glFlush();

    ///第三个程序---五星
    GLfloat a = 1 / (2-2*cos(72*Pi/180));
    GLfloat bx = a * cos(18 * Pi/180);
    GLfloat by = a * sin(18 * Pi/180);
    GLfloat cy = -a * cos(18 * Pi/180);
    GLfloat
    PointA[2] = { 0, a },
    PointB[2] = { bx, by },
    PointC[2] = { 0.5, cy },
    PointD[2] = { -0.5, cy },
    PointE[2] = { -bx, by };

    glClear(GL_COLOR_BUFFER_BIT);
    // 按照A->C->E->B->D->A的顺序,将五角星画出
    glBegin(GL_LINE_LOOP);//闭合折线
    glVertex2fv(PointA);
    glVertex2fv(PointC);
    glVertex2fv(PointE);
    glVertex2fv(PointB);
    glVertex2fv(PointD);
    glEnd();
    glFlush();

    ///第四个程序----画出正弦函数图形
    //GLfloat x;
    //glClear(GL_COLOR_BUFFER_BIT);
    //glBegin(GL_LINES);
    //glVertex2f(-1.0f, 0.0f);
    //glVertex2f(1.0f, 0.0f); // 以上两个点可以画x轴
    //glVertex2f(0.0f, -1.0f);
    //glVertex2f(0.0f, 1.0f); // 以上两个点可以画y轴
    //glEnd();
    //glBegin(GL_LINE_STRIP);
    //for(x=-1.0f/factor; x<1.0f/factor; x+=0.01f)
    //{
    // glVertex2f(x*factor, sin(x)*factor);
    //}
    //glEnd();
    //glFlush();

    }

    int main(int argc, char *argv[])

    {

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

    glutInitWindowPosition(100, 100);

    glutInitWindowSize(400, 400);

    glutCreateWindow("第一个OpenGL程序");

    glutDisplayFunc(&myDisplay);

    glutMainLoop();

    return 0;

    }

    效果图如下所示:

     
     
     
     
     
     

  • 相关阅读:
    离愁
    梦想与生活
    神秘巨星
    Web用户控件
    Ajax
    php的基本语法与字符串与增删改查
    php建立方法
    jquery
    上传文件
    webfrom验证控件
  • 原文地址:https://www.cnblogs.com/yemeishu/p/2310814.html
Copyright © 2011-2022 走看看