文档详情

介绍了OpenGL.ppt

发布:2017-07-07约字共69页下载文档
文本预览下载声明
第6章 OpenGL;6.1 基本介绍;6.1.1 背景情况 ;OpenGL独立于硬件设备、窗口系统和操作系统,使得以OpenGL为基础开发的应用程序可以在各种平台间移植。OpenGL可以运行在当前各种流行操作系统之上,如Windows95/98、Windows NT/2000、Linux、Mac OS、Unix、OS/2等。特别需要指出的是,由于Microsoft公司在其Windows95或更高版本的操作系统和Visual系列高级语言开发环境中捆绑了OpenGL标准,使得OpenGL在微机中得到了更为普遍的应用。 OpenGL可以与各种编程语言紧密接口。各种流行的编程语言如C、C++、Fortran、Ada、Java等都可以调用OpenGL中的库函数。 OpenGL是一个状态机,一直处于用户指定的状态中,直到状态被修改为止。;gl.h: 基本函数 glu.h: OpenGL实用库 glaux.h: OpenGL扩展库 glut.h: OpenGL实用工具包 #include GL/gl.h #include GL/glu.h #include GL/glaux.h #include GL/glut.h ;逻彻与弗纵纪臻却殷???弯伎亩昭劝刃邹兔墟梗雪力钱骇舔卉爱捂疥娃唁另介绍了OpenGL介绍了OpenGL;6.1.2 OpenGL的主要功能 ;纹理映射(Texture Mapping): 将真实感的纹理粘贴在物体表面,使物体逼真生动。纹理是数据的简单矩阵排列,数据有颜色数据、亮度数据和alpha数据。 位图和图像:提供了一系列函数来实现位图和图像的操作。位图和图像数据均采用像素的矩阵形式表示。 制作动画:提供了双缓存(Double Buffering)技术来实现动画绘制。双缓存即前台缓存和后台缓存,后台缓存用来计算场景、生成画面,前台缓存用来显示后台缓存已经画好的画面。当画完一帧时,交互两个缓存,这样循环交替以产生平滑动画。 选择和反馈:OpenGL为支持交互式应用程序设计了选择操作模式和反馈模式。在选择模式下,则可以确定用户鼠标指定或拾取的是哪一个物体,可以决定将把哪些图元绘入窗口的某个区域。而反馈模式,OpenGL把即将光栅化的图元信息反馈给应用程序,而不是用于绘图。 此外,OpenGL还提供了反走样技术,能够实现深度暗示(Depth Cue)、运动模糊(Motion Blur)、雾化(Fog)等特殊效果。 ;6.1.3 OpenGL的绘制流程和原理 ;6.1.4 VC++开发OpenGL绘图程序;// 首先定义像素存储格式 PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), // pfd的大小 1, // 结构的版本号 PFD_DRAW_TO_WINDOW| // 支持window PFD_SUPPORT_OPENGL| // 支持OpenGL PFD_DOUBLEBUFFER, // 双缓存 PFD_TYPE_RGBA, // RGBA颜色模式 24, // 24位颜色深度缓存 0,0,0,0,0,0, // color bits ignored 0, // no alpha buffer 0, // shift bit ignored 0, // 不使用累积缓存 0,0,0,0, // accum bits ignored 32, // 32位z缓冲 0, // 不使用模板缓存 0, // no auxiliary buffer PFD_MAIN_PLANE, // 选择主层面 0, // 保留 0,0,0 //layer masks ignored }; m_hDC = GetDC()-GetSafeHdc(); int pixelFormat = ChoosePixelFormat(m_hDC, pfd); SetPixelFormat(m_hDC, pixelFormat, pfd); // 创建绘图上下文RC m_hRC = wglCreateContext(m_hDC); wglMakeCurrent(m_hDC, m_hRC);;③ 改造OnSize函数 当视图尺寸变化是,应及时将新的客户区尺寸通知OpenGL,方能够正确在窗口客户区域显示二维场景,通过命令glViewport完成这项工作。 ④ 改造OnEraseBkgnd函数 重载视图类的OnEraseBkgnd成员,使之返回TRUE值可以阻止Windows重画窗口背景,因
显示全部
相似文档