Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2116805
  • 博文数量: 438
  • 博客积分: 3871
  • 博客等级: 中校
  • 技术积分: 6075
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-10 00:11
个人简介

邮箱: wangcong02345@163.com

文章分类

全部博文(438)

文章存档

2017年(15)

2016年(119)

2015年(91)

2014年(62)

2013年(56)

2012年(79)

2011年(16)

分类: LINUX

2016-06-29 09:58:15

1.一直不明白这个glClear
  1. #include <GL/glut.h>
  2. void display()
  3. {
  4.     glClearColor(1.0, 0.0, 0.0, 0.0);      //设置清除的颜色是red
  5.     glClear(GL_COLOR_BUFFER_BIT);          //用设置的颜色来清窗口,感觉默认是黑色,这儿设为red就用red来填窗口
  6.     glColor3f(0.0, 1.0, 0.0);              //设置颜色是绿色,用绿色来画矩形
  7.     glRectf(-0.5f,-0.5f, 0.5f, 0.5f);      //画一个矩形,opengl的坐标范围(-1,1),坐标原点在窗口的中心   
  8.     glFlush();                             //立即刷新到窗口上  
  9. }
    1. int main(int argc, char* argv[])
    2. {
    3.     glutInit(&argc, argv);                          //对GLUT进行初始化
    4.     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);    //设置显示方式,GLUT_RGB-->使用RGB颜色,GLUT_SINGLE-->使用单缓冲
    5.     glutInitWindowPosition(0, 0);                   //设置窗口在屏幕中的位置
    6.     glutInitWindowSize(300, 300);                   //设置窗口的大小
    7.     glutCreateWindow("OpenGL 3D View");             //创建窗口,其中的参数是标题
    8.     glutDisplayFunc(display);                       //设置刷新窗口的回调函数
    9.     glutMainLoop();                                 //现在还不太了解这个,暂时理解为sleep(100) 
    10.     return 0;
    11. }
结果如下图所示: 红配绿

2.设置顶点
opengl的顶点用glVertex表示,同时需要把顶点放在glBegin与glEnd之间才有意义,否则会丢掉
  1. #include <GL/glut.h>
  2. void display()
  3. {
  4.     glClearColor(0.0, 0.0, 0.0, 0.0); //black
  5.     glClear(GL_COLOR_BUFFER_BIT);

  6.     //glBegin(GL_POINTS);
  7.     //glBegin(GL_LINES);
  8.     //glBegin(GL_LINE_STRIP);
  9.     //glBegin(GL_LINE_LOOP);
  10.     //glBegin(GL_TRIANGLES);
  11.     //glBegin(GL_TRIANGLE_STRIP);
  12.     //glBegin(GL_TRIANGLE_FAN);
  13.     //glBegin(GL_QUADS);
  14.     glBegin(GL_POLYGON);
  15.     glColor3f(1.0, 0.0, 0.0); //red
  16.     glVertex2f(0.0, 0.0);
  17.     glVertex2f(0.0, 0.5);
  18.     glVertex2f(0.5, 0.0);
  19.     glVertex2f(0.5, 0.5);
  20.     glEnd();

  21.     glFlush();
  22. }
  23. int main(int argc, char* argv[])
  24. {
  25.     glutInit(&argc, argv);
  26.     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
  27.     glutInitWindowPosition(0, 0);
  28.     glutInitWindowSize(300, 300);
  29.     glutCreateWindow("OpenGL 3D View");
  30.     glutDisplayFunc(display);
  31.     glutMainLoop();
  32.     return 0;
  33. }
glBegin的mode参数的含义参考《OpenGL编程指南第七版》图2-7几何图元类型
3.画一个余弦函数
  1. #include <GL/glut.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #define PI 3.1415926
  5. void display()
  6. {
  7.     GLfloat i;
  8.     glClearColor(0.0, 0.0, 0.0, 0.0); //black
  9.     glClear(GL_COLOR_BUFFER_BIT);

  10.     glBegin(GL_LINES);
  11.     glColor3f(0.0, 1.0, 0.0); //green
  12.     glVertex2f(-1.0, 0.0);
  13.     glVertex2f(1.0, 0.0);
  14.     
  15.     glVertex2f(0.0, -1.0);
  16.     glVertex2f(0.0, 1.0);
  17.     glEnd();

  18.     glBegin(GL_LINE_STRIP);
  19.     glColor3f(1.0, 0.0, 0.0); //red
  20.     for(i=-PI; i<=PI; i+=0.01)
  21.     {
  22.         glVertex2f(i/PI, cos(i));
  23.     }
  24.     glEnd();

  25.     glFlush();
  26. } 
  27. main函数一样
注意: cos的单位是弧度






















阅读(1180) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~