Opengl GLUT工具开发 学习笔记 001

Code:
  1. //===============================================================  
  2. // Name        : GLUT-STATIC.cpp  
  3. // Author      : CodeVampire  
  4. // Version     :  
  5. // Copyright   : Your copyright notice  
  6. // Description : Hello World in C++, Ansi-style  
  7. //===============================================================  
  8.   
  9. /* 
  10.  * 包含必要的库文件 
  11.  */  
  12. #include <iostream>  
  13. #include <GL/glut.h>  
  14. #include <GL/glu.h>  
  15. #include <cstdlib>  
  16.   
  17. /* 
  18.  * 命名空间 
  19.  */  
  20. using namespace std;  
  21.   
  22. /* 
  23.  * 界面渲染函数 
  24.  * 原型 void renderScene(void); 
  25.  */  
  26. void renderScene() {  
  27.     /* 
  28.      * 设置背景颜色 
  29.      */  
  30.     glClearColor(0.8,0.6,0.7,0.0);  
  31.     /* 
  32.      * 清空颜色缓存 设定背景为黑色 
  33.      * 清空深度缓存 
  34.      */  
  35.     glClear(GL_COLOR_BUFFER_BIT);  
  36.     /* 
  37.      * 绘图开始指定绘制三角形 
  38.      */  
  39.     glBegin(GL_TRIANGLES);  
  40.         /* 
  41.          * 指定点对 三维点对 
  42.          */  
  43.         glColor3f(1.0,0.0,0.0);  
  44.         glVertex3f(-0.5,-0.5,0.0);  
  45.         glColor3f(0.0,1.0,0.0);  
  46.         glVertex3f(0.5,0.0,0.0);  
  47.         glColor3f(0.0,0.0,1.0);  
  48.         glVertex3f(0.0,0.5,0.0);  
  49.     /* 
  50.      * 绘图结束 
  51.      */  
  52.     glEnd();  
  53.     /* 
  54.      * 刷新 
  55.      */  
  56.     glFlush();  
  57. }  
  58.   
  59. /* 
  60.  * 窗口重绘函数 
  61.  * 原型 void changeSize(int w, int h) 
  62.  */  
  63. void changeSize(int width, int height)  
  64. {  
  65.     /* 
  66.      * 防止高度为零 
  67.      */  
  68.     if(height == 0)  
  69.         height = 1;  
  70.     /* 
  71.      * 计算比率 宽 比 高 
  72.      */  
  73.     float ratio = 1.0*width/height;  
  74.     /* 
  75.      * glMatrixMode() 指定当前矩阵模式 
  76.      * 参数有: 
  77.      * GL_MODELVIEW 对模型视景矩阵堆栈应用随后的矩阵操作 
  78.      * GL_PROJECTION 对投影矩阵应用随后的矩阵操作 
  79.      * GL_TEXTURE 对纹理矩阵堆栈应用随后的矩阵操作 
  80.      * 与 glLoadIdentity() 搭配使用 
  81.      */  
  82.     glMatrixMode(GL_PROJECTION);  
  83.     /* 
  84.      * 重置当前指定的矩阵为单位矩阵 
  85.      */  
  86.     glLoadIdentity();  
  87.     /* 
  88.      * 设定视口矩形 
  89.      * 原型 glViewport(int x, int y, int width, int height); 
  90.      * x,y 视口矩形的左下角坐标 单位为像素 缺省值为0 
  91.      * width,height 视口宽高 
  92.      */  
  93.     glViewport(0,0,width,height);  
  94.     /* 
  95.      * 设置透视投影矩阵 
  96.      * gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); 
  97.      * fovy 指定视景体的视野的角度 以度数为单位 y轴的上下方向 
  98.      * aspect 指定视景体的宽高比 x平面上 
  99.      * zNear 指定观察者到视景体的最近的裁剪面的距离 >0 
  100.      * zFar 与上相反 >0 
  101.      */  
  102.     gluPerspective(45,ratio,1,1000);  
  103.     glMatrixMode(GL_MODELVIEW);  
  104.     glLoadIdentity();  
  105.     /* 
  106.      * 定义视点矩阵 
  107.      * 原型 gluLookAt( 
  108.      *                     GLdouble eyex,GLdouble eyey,GLdouble eyez 
  109.      *                     //定义视点位置 
  110.      *                     GLdouble centerx,GLdouble centery,GLdouble centerz 
  111.      *                     //参考点位置 
  112.      *                     GLdouble upx,GLdouble upy,GLdouble upz 
  113.      *                     //向上向量方向 0.0,1.0,0.0 
  114.      *                 ) 
  115.      */  
  116.     gluLookAt(0.0,0.0,3.0,0.0,0.0,-1.0,0.0f,1.0f,0.0f);  
  117. }  
  118.   
  119. /* 
  120.  * 声明主函数 
  121.  */  
  122. int main(int argc,char* argv[]) {  
  123.     /* 
  124.      * 初始化GLUT 使用main参数 argc argv 
  125.      */  
  126.     glutInit(&argc,argv);  
  127.     /* 
  128.      * 设置GLUT显示模式 位设置模式 
  129.      * GLUT_RGBA / GLUT_RGB RGB颜色模式 
  130.      * GLUT_INDEX 颜色索引模式 
  131.      * GLUT_SINGLE 单缓冲模式 
  132.      * GLUT_DOUBLE 双缓冲 
  133.      * GLUT_ACCUM Accumulation Buffer 
  134.      * GLUT_STENCIL Stencil Buffer 
  135.      * GLUT_DEPTH 深度缓冲 
  136.      */  
  137.     glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGB);  
  138.     /* 
  139.      * GLUT窗口显示位置 默认参数为 -1 
  140.      */  
  141.     glutInitWindowPosition(-1,-1);  
  142.     /* 
  143.      * GLUT窗口尺寸 参数顺序为 宽 高 
  144.      */  
  145.     glutInitWindowSize(640,480);  
  146.     /* 
  147.      * GLUT创建窗口 参数指定窗口标题 
  148.      */  
  149.     glutCreateWindow("GLUT-Application");  
  150.   
  151.     /* 
  152.      * GLUT绘图函数注册 
  153.      */  
  154.     glutDisplayFunc(renderScene);  
  155.     /* 
  156.      * GLUT窗口重绘函数注册 
  157.      */  
  158.     glutReshapeFunc(changeSize);  
  159.     /* 
  160.      * GLUT主函数循环 
  161.      */  
  162.     glutMainLoop();  
  163.     return 0;  
  164. }  

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值