1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
openGL技巧

这里是我在学习《opengl programming guide fifth edition》过程的从头到尾的整个的学习笔记,放在这里,给自己做个以后的参考,也想与大家交流。有很多错别字,请原谅~~ 最前面:OpenGL是一个开放的2D/3D图形绘制的工业标准,正因为只是一个标准,所以OPENGL的管理者并没有一个所谓的SDK,所有开发者可以使用的SDK都是Khronos Group(OpenGl标准的管理者)的成员应用这个标准自己编写的(它的成员可以得到这个标准),例如常见在Microsoft的Visual Studio下的opengl是由微软根据OpenGl1.1而自己编写的。 Opengl的更高版本的更多特性都叫做,OPENGL扩展,不同的显卡支持这些扩展中的不同扩展函数,所以使用更高级的特性时你必须拥有这些扩展库,并且你的显卡支持你用的特性。 GLEW就是一个非常好的扩展库,它包括了最近的OPENGL核心库,和大量的扩展库,并且可以根据硬件自动识别哪些扩展可用。并且NVIDIA会有最新的OPENGL_SDK_Guide,这个guide其实就是以各种DEMO的形式来向开发者展示他们的显卡都支持到的最新的核心库和哪些扩展库,他们的DEMO基本上也是用GLEW来写的。 NVIDIA为了支持OPENGL的更高版本和新的扩展也会经常发布新的硬件驱动,来支持OPENGL的发展,可随时关注NVIDIA的开发者网站。 0. 配置开发环境: 在VS2005下一般选用WIN32控制台程序,然后还要加入window.h 1. glut程序的一般组成: glutInit glutInitDisplayMode glutInitWindowPosition glutInitWindowSize glutCreateWindow 直到调用glutMainLoop()窗口才真的会显现 每当窗口内容需要重绘时都会调用glutDisplayFunc(void (*func)(void)),当你再改变某些内容想强制重绘时可调用glutPostRedisplay(void)发送一个信号 2 glut的四个时间响应回掉函数 glutReshapeFunc(void (*func)(int w, int h)) glutKeyboardFunc(void (*func)(unsigned char key, int x, int y)) glutMouseFunc(void (*func)(int button, int state, int x, int y)) glutMotionFunc(void (*func)(int x, int y)) 3.双缓存,一个显示,另一个准备下一帧的绘制,当下一帧绘制好来,切换到另一个缓存,如此交替,可以时人看不到绘制当过程,只有绘制好当结果才会被看到,就不会出现黑的屏幕(闪)。 在写运动的程序中,除来初始化时用glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)外,在绘制函数的最后一般要加上glutSwapBuffers(),因为打开双缓存后,程序不会自动交换要显示的那个缓存,而是一直显示一个缓存的内容,这样当一帧结束后这一缓存会清屏并进行重绘,而这以过程也被显示出来,通常回看到程序像卡调,因为大部分时间这一个缓存在进行绘制运算,真正显现出当绘制的结果只是一瞬,所以要调用glutSwapBuffers()马上显示另一个缓存已完成的结果。 4.opengl绘制的三个最基本操作:clearing the window, drawing a geometric object, drawing a raster object(指一些二维对象) clearing the window:为什么要先CLEAR,因为缓存中的数据通常是上次保留的,要清掉 图形硬件有好多个缓存,glClear后面括号中指的是要清理的是那个缓存,有Color buffer Depth buffer Accumulation buffer Stencil buffer四种。 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 比 glClear(GL_COLOR_BUFFER_BIT); glClear(GL_DEPTH_BUFFER_BIT)要快 绘制的基本原语:点 线 三角形 四边形 多边形 ,此外还有一个特殊点glRect函数绘制矩形 (在先进点GPU上,用一个向量做参数来制定一个点比用四个位置做参数性能会更好) 画虚线: 先glLineStipple(1, 0x3F07)设置类型,再glEnable(GL_LINE_STIPPLE)打开虚线开关,这样以后调用等

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档