您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 4.OpenGL编程基础
计算机辅助设计及图形学第4讲OpenGL基础华中科技大学CAD中心吴义忠13545009970Cad.wyz@hust.edu.cn1主要内容OpenGL的主要功能OpenGL的绘制流程OpenGL的基本语法OpenGL的GLUT工具VC开发OpenGL2OpenGL图形软件包OpenGL是SGI(SiliconGraphicsInc.)公司对IRISGL进行改进,扩展可移植性,形成的一个跨平台开放式图形编程接口。目前,OpenGL标准由1992年成立的独立财团OpenGLArchitectureReviewBoard(ARB)以投票方式产生,并制成规范文档公布。3OpenGL图形库的特点非面向对象非实体造型核心动态库OpenGL的主要功能模型绘制模型观察颜色模式光照模型字体、位图和图像处理5OpenGL的主要功能(OpenGLPG.pdf)纹理映射实时动画交互技术反走样、雾化、融合细分显示NURBS6OpenGL的绘制流程——工作方式7图OpenGL图形处理系统在计算机系统中的层次结构一个完整的窗口系统的OpenGL图形处理系统的结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件。应用软件OpenGL窗口系统操作系统图形硬件OpenGL的绘制流程——流水线8OpenGL命令缓冲区光栅化变换、光照帧缓存调用OpenGLAPI函数图一条简化的OpenGL绘制流水线OpenGL命令将被放在一个命令缓冲区中,这样命令缓冲区中包含了大量的命令、顶点数据和纹理数据。当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。OpenGL内部处理过程OpenGL的基本语法——3.2版本相关库10OpenGL核心库:gl(41个函数)OpenGL实用程序库:glu(115个函数)OpenGL编程辅助库:auxOpenGL实用程序工具包(OpenGLutilitytoolkit,GLUT):glutWindows专用库:wglOpenGL的基本语法——命名规则11OpenGL函数都遵循一个命名约定,即采用以下格式:库前缀根命令可选的参数个数可选的参数类型例如函数glColor3f(…),gl表示这个函数来自库gl.h,color表示该函数用于颜色设定,3f表示这个函数采用了三个浮点数参数。OpenGL的基本语法——数据类型12OpenGL数据类型内部表示法定义为C类型C字面值后缀GLbyte8位整数signedcharBGLshort16位整数shortSGLint,GLsizei32位整数longLGLfloat,GLclampf32位浮点数floatFGLdouble,GLclampd64位浮点数doubleDGLubyte,GLboolean8位无符号整数unsignedcharUbGLshort16位无符号整数unsignedshortUsGLuint,GLenum,GLbitfield32位无符号整数unsignedlongUi表2.1OpenGL的数据结构OpenGL程序实例——头文件包含13利用OpenGL实现图形绘制,首先要引入OpenGL核心库以及其他需要使用的库的头文件。GLUT保证了gl.h和glu.h被正确包含。#includegl/glut.h#includewindows.hOpenGL程序实例——GLUT窗口管理14初始化(glutInit)创建窗口(glutCreateWindow)设定窗口的显示模式(glutInitDisplayMode)指定窗口的位置和大小(glutInitWindowPosition和glutInitWindowSize)指定窗口的显示内容函数(glutDisplayFunc)运行框架(glutMainLoop)OpenGL程序实例——绘制图形15指定窗口背景色(glClearColor)颜色管理,使用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.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表4OpenGL的一些常用混合色OpenGL程序实例——VC窗口绘制17像素设定intChoosePixelFormat(HDChdc,CONSTPIXELFORMATDESCRIPTOR*ppfd);BOOLSetPixelFormat(HDChdc,intiPixelFormat,CONSTPIXELFORMATDESCRIPTOR*ppfd);渲染环境HGLRCwglCreateContext(HDChdc);BOOLwglMakeCurrent(HDChdc,HGLRChglrc);双帧缓存使用BOOLSwapBuffers(HDChdc);实例讲解GLUT应用MFC程序上机绘制圆、矩形、多段线等实体(不交互)使用GLUT使用MFC
本文标题:4.OpenGL编程基础
链接地址:https://www.777doc.com/doc-3309657 .html