《4OpenGL编程基础.ppt》由会员分享,可在线阅读,更多相关《4OpenGL编程基础.ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机辅助设计及图形学计算机辅助设计及图形学第第4 4讲讲 OpenGLOpenGL基础基础华中科技大学华中科技大学CAD中心中心吴义忠吴义忠13545009970C 1主要内容主要内容oOpenGL的主要功能的主要功能oOpenGL的的绘制流程制流程oOpenGL的基本的基本语法法oOpenGL的的GLUT工具工具oVC开开发OpenGL2OpenGL图形软件包图形软件包pOpenGL是是SGI(Silicon Graphics Inc.)公司公司对IRIS GL进行改行改进,扩展可移植性,形成的一展可移植性,形成的一个跨平台开放式个跨平台开放式图形形编程接口程接口。p目前,目前,OpenG
2、L标准由准由1992年成立的独立年成立的独立财团OpenGL Architecture Review Board(ARB)以投票方式以投票方式产生,并制成生,并制成规范文档公布。范文档公布。3OpenGL图形库的特点图形库的特点o非面向非面向对对象象o非非实实体造型核心体造型核心o动态库动态库OpenGL的主要功能的主要功能o模型模型绘制制o模型模型观察察o颜色模式色模式o光照模型光照模型o字体、位字体、位图和和图像像处理理5OpenGL的主要功能的主要功能(OpenGL PG.pdf)o纹理映射理映射o实时动画画o交互技交互技术o反走反走样、雾化、融合化、融合o细分分显示示oNURBS6Op
3、enGL的绘制流程的绘制流程工作方式工作方式7图图 OpenGL图形处理系统在图形处理系统在计算机系统中的层次结构计算机系统中的层次结构o一个完整的窗口系一个完整的窗口系统的的OpenGL图形形处理系理系统的的结构构为:最底:最底层为图形硬形硬件,第二件,第二层为操作系操作系统,第三第三层为窗口系窗口系统,第四,第四层为OpenGL,最上面的,最上面的层为应用用软件。件。OpenGL的绘制流程的绘制流程流水线流水线8图图 一条简化的一条简化的OpenGL绘制流水线绘制流水线oOpenGL命令将被放在一个命令命令将被放在一个命令缓冲区中,冲区中,这样命令命令缓冲区中包含了大量的命令、冲区中包含了
4、大量的命令、顶点数据和点数据和纹理数据。当理数据。当缓冲区被清空冲区被清空时,缓冲区中的命冲区中的命令和数据都将令和数据都将传递给流水流水线的下一个的下一个阶段。段。OpenGL内部处理过程内部处理过程OpenGL的基本语法的基本语法3.2版本版本相关库相关库10oOpenGL核心核心库:gl(41个函数)个函数)oOpenGL实用程序用程序库:glu(115个函数)个函数)oOpenGL编程程辅助助库:auxoOpenGL实用程序工具包(用程序工具包(OpenGL utility toolkit,GLUT):):glutoWindows专用用库:wglOpenGL的基本语法的基本语法命名规则
5、命名规则11oOpenGL函数都遵循一个命名约定,即采用以函数都遵循一个命名约定,即采用以下格式:下格式:例如函数例如函数glColor3f(),gl表示这个函数表示这个函数来自库来自库gl.h,color表示该函数用于颜色设定,表示该函数用于颜色设定,3f表示这个函数采用了三个浮点数参数。表示这个函数采用了三个浮点数参数。OpenGL的基本语法的基本语法数据类型数据类型12OpenGL数据类型数据类型内部表示法内部表示法定义为定义为C类型类型C字面值后缀字面值后缀GLbyte8位整数位整数signed charBGLshort16位整数位整数shortSGLint,GLsizei32位整数位
6、整数longLGLfloat,GLclampf32位浮点数位浮点数floatFGLdouble,GLclampd64位浮点数位浮点数doubleDGLubyte,GLboolean8位无符号整数位无符号整数unsigned charUbGLshort16位无符号整数位无符号整数unsigned shortUsGLuint,GLenum,GLbitfield32位无符号整数位无符号整数unsigned longUi表表2.1 OpenGL的数据结构的数据结构OpenGL程序实例程序实例头文件包含头文件包含13o利用利用OpenGL实现图形形绘制,首先要引入制,首先要引入OpenGL核心核心库以及
7、其他需要使用的以及其他需要使用的库的的头文文件。件。oGLUT保保证了了gl.h和和glu.h被正确包含。被正确包含。#include#include OpenGL程序实例程序实例GLUT窗口管理窗口管理14o初始化(初始化(glutInit)o创建窗口(建窗口(glutCreateWindow)o设定窗口的定窗口的显示模式(示模式(glutInitDisplayMode)o指定窗口的位置和大小(指定窗口的位置和大小(glutInitWindowPosition和和glutInitWindowSize)o指定窗口的指定窗口的显示内容函数(示内容函数(glutDisplayFunc)o运行框架(
8、运行框架(glutMainLoop)OpenGL程序实例程序实例绘制图形绘制图形15o指定窗口背景色(指定窗口背景色(glClearColor)o颜色管理,使用色管理,使用RGB颜色模型。一种色模型。一种颜色用色用红、绿、蓝三种三种颜色成分混合而成,每种色成分混合而成,每种颜色成分色成分使用使用0.0到到1.0之之间的任意有效浮点数来表示的任意有效浮点数来表示颜色色值。OpenGL程序实例程序实例绘制图形绘制图形16混合色混合色红色成分(红色成分(R)绿色成分(绿色成分(G)蓝色成分(蓝色成分(B)黑黑0.00.00.0红红1.00.00.0绿绿0.01.00.0黄黄1.01.00.0蓝蓝0.
9、00.01.0紫紫1.00.01.0青青0.01.01.0深灰深灰0.250.250.25浅灰浅灰0.750.750.75棕棕0.600.400.12南瓜橙南瓜橙0.980.6250.12粉红粉红0.980.040.70紫红紫红0.600.400.70白白1.01.01.0表表4 OpenGL的一些常用混合色的一些常用混合色OpenGL程序实例程序实例VC窗口绘制窗口绘制17o像素像素设定定nint ChoosePixelFormat(HDC hdc,CONST PIXELFORMATDESCRIPTOR*ppfd);nBOOL SetPixelFormat(HDC hdc,int iPixelFormat,CONST PIXELFORMATDESCRIPTOR*ppfd);o渲染渲染环境境nHGLRC wglCreateContext(HDC hdc);nBOOL wglMakeCurrent(HDC hdc,HGLRC hglrc);o双双帧缓存使用存使用nBOOL SwapBuffers(HDC hdc);实例讲解实例讲解oGLUT应应用用oMFC程序程序上机上机绘制制圆、矩形、多段、矩形、多段线等等实体(不交互)体(不交互)o使用使用GLUTo使用使用MFC