OpenGL程序:绘制正方形和三角形

时间:2023-02-13 08:42:49

先上代码:

  1. #include<GL/glut.h>
  2. #include<GL/gl.h>
  3.  
  4. void display()
  5. {
  6.     glClearColor(0.0, 0.0, 0.0, 0.0);
  7.     glClear(GL_COLOR_BUFFER_BIT);
  8.     glColor4f(1.0, 0.0, 0.0, 1.0);
  9.     
  10.     glBegin(GL_QUADS);
  11.     glVertex3f(-0.5, -0.5, 0.0);
  12.     glVertex3f(0.5, -0.5, 0.0);
  13.     glVertex3f(0.5, 0.5, 0.0);
  14.     glVertex3f(-0.5, 0.5, 0.0);
  15.     glEnd();
  16.     
  17.     glFlush();
  18.  }
  19.  
  20. int main(int argc, char** argv)
  21. {
  22.    glutInit(&argc, argv);                         ////初始化OpenGL环境
  23.    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
  24.    glutInitWindowPosition(100, 100);
  25.    glutInitWindowSize(400, 400);
  26.    glutCreateWindow("正方形OpenGL程序");
  27.    glutDisplayFunc(display);  //用于注册一个绘图函数,就是设置一个函数当需要画图时就调用函数
  28.    glutMainLoop();
  29.  
  30.    return 0;
  31. }

[说明]
1. glClear()

  说明:可以使用 | 运算符组合不同的缓冲标志位,表明需要清除的缓冲,例如
        glClear(GL_COLOR_BUFFER_BIT |   GL_DEPTH_BUFFER_BIT)
         表示要清除颜色缓冲以及深度缓冲,可以使用以下标志位
  参数:
       GL_COLOR_BUFFER_BIT: 当前可写的颜色缓冲
       GL_DEPTH_BUFFER_BIT : 深度缓冲
       GL_ACCUM_BUFFER_BIT : 累积缓冲
       GL_STENCIL_BUFFER_BIT : 模板缓冲

2.glBegin()
    
  说明:glBegin和glEnd函数限定了一组或多组图元的定点定义
  参数: 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定义了这个多边形。

    

【三角形】

  1. #include<GL/glut.h>
  2.  
  3. void display()
  4. {
  5.     glClearColor(0.0, 0.0, 0.0, 0.0);
  6.     glClear(GL_COLOR_BUFFER_BIT);
  7.     glColor4f(1.0, 0.0, 0.0, 1.0);
  8.     
  9.     glBegin(GL_TRIANGLES);
  10.     glVertex3d(-1.0, 0.0, 0.0);
  11.     glVertex3d(0.0, 1.0, 0.0);
  12.     glVertex3d(1.0, 0.0, 0.0);
  13.     glEnd();
  14.     
  15.     glFlush();
  16.  }
  17. void main()
  18. {
  19.    glutCreateWindow("三角形");
  20.    glutDisplayFunc(display);
  21.    glutMainLoop();
  22. }