opengl学习---2.学习opengl的一些代码

来源:互联网 发布:无人机地面站软件功能 编辑:程序博客网 时间:2024/06/05 07:38
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. } 
  10. int
结果如下图所示: 红配绿

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的单位是弧度




0 0
原创粉丝点击