C高级编程技术浅析.doc

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级编程技术)函数原型宏常量定义等)函数的二进制代码)Glut下载地址: /resources/libraries/glut/glutdlls37beta.zip 对glutdlls37beta文件解压得到5个文件:glut.dll, glut.h ,glut.lib, glut32.dll, glut32.lib。 Glut开发环境配置: 将glut.h复制到..\codeblocks\mingw\include\gl文件夹中。 将glut32.lib复制到..\codeblocks\mingw\lib文件夹中。 将glut32.dll复制到c:\windows\system32文件夹中。 打开codeblocks,在设置\编译器\链接器设置为: 搜索路径设置为: Glut作为OpenGL编程实用工具库,它能编写带窗口的OpenGL应用程序。Glut是以OpenGL为基础的,由于在Glut的头文件glut.h已经包含OpenGL的头文件gl.h和glu.h,因此应用程序中只需要Glut的头文件。 #include gl\glut.h 开发环境配置好以后,就可以开始建立项目,绘制OpenGL图形。 在我们的Codeblocks 13.12课堂教学版本中,已经将常用的专业函数库软件包下载好,并且已经将开发环境配置好,无需大家再下载并配置include包含和lib库连接。开发步骤如下: 1、开始新建项目,选择“FreeGLUT project”。 2、“请选择FreeGLUT所在的文件夹:”时如下: 3、项目建立后,开始编写代码: 利用Glut编写OpenGL图形程序时,可以编写带窗口的应用程序。 (1)窗口管理 为了完成初始化和创建窗口的任务,需要调用5个Glut函数。 1)glutInit函数:该函数用于初始化GLUT库,必须在调用所有其他GLUT函数之前调用该函数。 2)glutInitDisplayMode函数:用来设定GLUT窗口的显示模式。 3)glutInitWindowPosition函数:指定窗口左上角在屏幕上的位置。 4)glutInitWindowSize函数:指定窗口大小。 5)glutCreatWindow函数:创建一个窗口,在调用主循环函数glutMainLoop()前,窗口不会被显示出来。 (2)显示回调函数 所谓回调函数是指被Windows系统调用的用户自定义的函数。 glutDisplayFunc是GLUT最重要的事件回调函数,每当GLUT认为需要重新显示窗口内容时,都将调用由glutDisplayFunc注册的显示回调函数。因此,应用程序将OpenGL绘制场境的处理都放到显示回调函数中。 (3)处理事件输入 当指定事件发生时(比如某按键按下时,鼠标移动时……),相应的回调函数可以注册到如下 glut函数: glutReshapeFunc函数 用来注册窗口大小改变时调用的回调函数。 glutKeyboardFunc函数 用来注册当按下一个键(ASCII生成键)时调用的按键处理函数。 glutSpecialFunc函数 用来注册当按下一个非ASCII生成键时调用的按键处理函数。 glutMouseFunc函数 用来注册当鼠标按下或释放时调用的按键处理函数。 glutMotionFunc函数 用来注册当鼠标移动时调用的按键处理函数。 glutTimerFunc函数 用来注册一个定时器回调函数。 glutIdleFunc函数 用来注册一个在事件循环空闲时执行的回调函数。 (4)事件循环 最后需要调用glutMainLoop函数,开启GLUT主事件处理循环,此时,之前创建好的窗口及窗口内容被显示出来,程序开始处理键盘、鼠标、定时器、空闲操作等事件,直到程序终止函数才返回。 (5)绘制三维物体的函数 GLUT提供了许多三维物体的绘制函数,举例如下: void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);?线框球 void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);?实心球 void glutWireCube(GLdouble size);?线框立方体 void glutSolidCube(GLdouble size);?实心立方体 void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings);?线框圆环 void glutSolidTorus(GLdouble innerRadius, GLdouble outerRad

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档