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

本文介绍OpenGL的基本绘图方法,包括使用glClear清除颜色缓冲区、设置顶点绘制不同图元及绘制余弦曲线等。通过具体示例展示了如何在OpenGL中进行基本图形的绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值