- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章 OpenGL的基本框架
//函数SetupRC用于初始化,常用来设置场景渲染状态 void SetupRC(void) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // 设置窗口的清除色为白色 } void main(void) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //初始化GLUT库OpenGL窗口的显示模式 glutCreateWindow(GLRect); // 创建一个名为GLRect的窗口 // 设置当前窗口的显示回调函数和窗口再整形回调函数 glutDisplayFunc(RenderScene); glutReshapeFunc(ChangeSize); SetupRC(); glutMainLoop(); //启动主GLUT事件处理循环 } 第一章 OpenGL的基本框架 图1.4 GLRect程序运行结果 第一章 OpenGL的基本框架 1.7.1 库和头文件 程序GLRect中包含了4个头文件,其中定义了程序所用的函数原形。此外,OpenGL需要下列*.lib包含在你的工程中:opengl.lib,glu.lib,glut32.lib;另外在运行程序路径下或\win98\system\(\winNT\system32)下需要一些动态连接库:opengl32.dll,glu32.dll,glut32.dll。 1.7.2 函数主体 我们先看所有C程序的入口点: void main(void) { 1. 显示模式 第一行代码如下: glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 第一章 OpenGL的基本框架 它告诉GLUT库在创建窗口时使用单缓冲区窗口(GLUT_SINGLE)并使用RGB颜色模式(GLUT_RGB)。由于在屏幕上显示图形是由像素构成的,而像素的颜色及灰度信息都是存储在帧缓冲存储区中,单缓冲区窗口使用单一的帧缓冲存储区,这样所有的绘图命令都在显示窗口中执行;另一种是双缓冲区窗口(GLUT_DOUBLE),它使用了两个帧缓冲存储区,这样在窗口中执行的绘图命令实际上利用其中一个帧缓冲存储区创建一个场景,然后很快地交换到窗口视图中来,这种方法常用于产生动画效果的场合。RGB颜色模式意味着要通过分别提供红、绿、蓝成分的浓度来指定颜色。 第一章 OpenGL的基本框架 2. 创建OpenGL窗口 下一行代码: glutCreateWindow(GLRect); 它利用glut库中的窗口管理函数在屏幕上创建一个标题为“GLRect”的窗口。 3. 回调函数 后面的两行代码 glutDisplayFunc(RenderScene); glutReshapeFunc(ChangeSize); 分别用于指定当前窗口的显示回调函数和再整形回调函数。回调函数是响应某种事件而被调用的函数,他由程序员编制,通过GLUT注册函数连接到特定的函数。这样只要需要绘制窗口,GLUT就会调用函数RenderScene;而当窗口的大小或形状发生变化时,GLUT会调用函数ChangeSize。 第一章 OpenGL的基本框架 4.设置上下文并执行 SetupRC()函数与GLUT框架无关,其作用是进行OpenGL的初始化。OpenGL的初始化必须在渲染之前进行,由于OpenGL使用状态机,即每条OpenGL命令都使用当前的渲染状态完成,而对当前渲染状态的任何修改都会影响到之后的任何OpenGL命令,直至再次修改当前渲染状态,故此在一个场景中,许多的状态只要设置一次就可以了。 程序的结尾是最后一个GLUT函数调用: glutMainLoop( ); } 该函数让GLUT框架开始运行,所有设置的回调函数开始工作,直到用户终止程序为止。 第一章 OpenGL的基本框架 1.7.3 OpenGL图形的绘制 1. 初始化 函数SetupRC主要用于初始化,其中只调用了一个函数 glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 这个函数用于设置清除窗口时使用的颜色,即设定窗口内的背景色。在OpenGL中,一种颜色用红、绿、蓝成分的混合来表示,每种成分的值可以是0.0到1.0之间的任意有效浮点数,这样虽理论上可以产生无限多种颜色,但实际可输出的颜色是有限的。这类似于Windows中使用RGB宏来创建COLORREF值时的颜色规范,不同的只是其中红、绿、蓝三种颜色成分的取值范围是0到255。表1-2给出了一些常见的混合色。 表1-2 一些常用的混合色 混合色 红色成分(R) 绿色成分(G) 蓝色成分
文档评论(0)