《OpenGL图形软件包ppt课件》由会员分享,可在线阅读,更多相关《OpenGL图形软件包ppt课件(40页珍藏版)》请在金锄头文库上搜索。
1、OpenGL图形软件包图形软件包u OpenGL简介简介u OpenGL坐标系的设置坐标系的设置OpenGL简介简介一、一、OpenGL是什么是什么开放图形库开放图形库OpenGLOpen Graphics Library是图形硬是图形硬件的一个软件接口,它实现了各种二维和三维的高级图形件的一个软件接口,它实现了各种二维和三维的高级图形处置技术,是实现逼真的三维效果与建立交互式三维景观处置技术,是实现逼真的三维效果与建立交互式三维景观的强大工具。的强大工具。OpenGL独立于硬件系统和操作系统,可以在各种类型的独立于硬件系统和操作系统,可以在各种类型的计算机、各种操作系统上运用,还可以在网络环
2、境下以客计算机、各种操作系统上运用,还可以在网络环境下以客户户-效力器方式任务,具有很高的可移植性。效力器方式任务,具有很高的可移植性。OpenGL中的图形函数定义为独立于任何程序设计言语的中的图形函数定义为独立于任何程序设计言语的一组规范,在各种编程言语中,如一组规范,在各种编程言语中,如C+、FORTRAN、JAVA等都可以调用等都可以调用OpenGL的库函数。的库函数。OpenGL简介简介一一.OpenGL是什么是什么二二.OpenGL是一套运用程序编程接口是一套运用程序编程接口(Application Programming Interface,API),借助于,借助于OpenGL编程
3、编程可实现对图形硬件的访问。可实现对图形硬件的访问。三三.OpenGL有两个重要的优点:有两个重要的优点:四四.1、 OpenGL非常接近底层硬件,运用非常接近底层硬件,运用OpenGL编写编写的程序具有较高的运转效率;的程序具有较高的运转效率;五五.2、 OpenGL易于掌握和运用。易于掌握和运用。OpenGL简介简介【注】【注】API:在计算机图形学的诸多运用领域,如交互游:在计算机图形学的诸多运用领域,如交互游戏、交互网站、戏、交互网站、CAD软件包设计中,运用软件各项功能软件包设计中,运用软件各项功能的实现依赖硬件和底层软件。为防止运用程序所共有的规的实现依赖硬件和底层软件。为防止运用
4、程序所共有的规范功能代码反复编写,也为了程序员在编写代码时不用关范功能代码反复编写,也为了程序员在编写代码时不用关怀图形硬件的细节,同时提高运用程序的可移植性,怀图形硬件的细节,同时提高运用程序的可移植性,API应运而生。应运而生。API经过一套精心定义的接口函数,实现图形经过一套精心定义的接口函数,实现图形软件与系统的交互。软件与系统的交互。OpenGL简介简介OpenGL API:OpenGL为多种图形硬件所支持,它包含为多种图形硬件所支持,它包含200多个可用于多个可用于构建运用程序的函数。几乎一切的计算机和操作系统中都构建运用程序的函数。几乎一切的计算机和操作系统中都有有OpenGL的
5、相应实现,运用的相应实现,运用OpenGL编写的程序可被移编写的程序可被移植到任何支持该接口的计算机。一个典型的植到任何支持该接口的计算机。一个典型的OpenGL运用运用程序可运转在具有恣意实现方式的平台中。程序可运转在具有恣意实现方式的平台中。此外,此外,OpenGL具有高度的稳定性。具有高度的稳定性。OpenGL简介简介总结总结OpenGL的优势主要表达在下面三方面:的优势主要表达在下面三方面:1. 与与C言语严密结合言语严密结合OpenGL命令最初就是用命令最初就是用C言语函数来描画的,对于学过言语函数来描画的,对于学过C言言语的人而言,语的人而言,OpenGL容易了解和掌握的。容易了解
6、和掌握的。2. 强大的可移植性强大的可移植性与与DirectX相比较,相比较,OpenGL有更强的可移植性。有更强的可移植性。 DirectX基于基于Windows系统,游戏开发还必需基于系统,游戏开发还必需基于XBOX游戏机。游戏机。OpenGL不依赖操作系统,真正做到与硬件无关,与平台无关。不依赖操作系统,真正做到与硬件无关,与平台无关。3. 高性能的图形渲染高性能的图形渲染OpenGL是一个工业规范,各显卡厂家无一不对是一个工业规范,各显卡厂家无一不对OpenGL提供提供强力支持,使得强力支持,使得OpenGL得以广泛用于各行业图形软件的开发。得以广泛用于各行业图形软件的开发。OpenG
7、L简介简介二二.OpenGL的主要功能的主要功能三三.1、模型、模型绘绘制:制:OpenGL可以可以绘绘制点、制点、线线和多和多边边形,形,并利用并利用这这些根本些根本图图元,几乎可以构造出一切的三元,几乎可以构造出一切的三维维模型。模型。 OpenGL还还提供球、多面体、茶提供球、多面体、茶壶壶等复等复杂杂形形体,以及体,以及Bezier、NURBS曲曲线线曲面的曲面的绘绘制函数。制函数。四四.2、模型察看:、模型察看: OpenGL提供完提供完备备的几何的几何变换变换函数,函数,运用运用户户可以可以选择选择三三维维模型的察看方式。模型的察看方式。五五.3、颜颜色方式:色方式: OpenGL
8、提供两种提供两种颜颜色方式色方式RGBA方式和方式和颜颜色索引方式;三色索引方式;三维维模型着色有平面着模型着色有平面着色方式和光滑着色方式。色方式和光滑着色方式。OpenGL简介简介二二.OpenGL的主要功能的主要功能三三.4、光照运用:、光照运用: OpenGL根据光线追踪实际,提供多根据光线追踪实际,提供多种光源模拟函数,以及模型外表反射特征,即模拟种光源模拟函数,以及模型外表反射特征,即模拟材质属性的函数,可以实现三维场景的光照模拟。材质属性的函数,可以实现三维场景的光照模拟。四四.5、图形效果加强:、图形效果加强: OpenGL提供了一系列加强三维提供了一系列加强三维景观图形效果的
9、函数,包括反走样、混合和雾化。景观图形效果的函数,包括反走样、混合和雾化。五五.6、位图和图像处置:、位图和图像处置: OpenGL提供了一系列针对位提供了一系列针对位图和图像进展操作的函数。位图和图像的数据均采图和图像进展操作的函数。位图和图像的数据均采用像素矩阵来表示。用像素矩阵来表示。OpenGL简介简介二二.OpenGL的主要功能的主要功能三三.7、纹理映射:、纹理映射: OpenGL提供了一系列纹理映射函数,提供了一系列纹理映射函数,可以方便的把真实图像贴到景物的多边形上,从而可以方便的把真实图像贴到景物的多边形上,从而绘制逼真的三维景观。绘制逼真的三维景观。四四.8、实时动画:、实
10、时动画: OpenGL采用双缓存技术实现动画效采用双缓存技术实现动画效果。果。五五.9、交互技术:、交互技术: OpenGL提供了方便的三维图形人机提供了方便的三维图形人机交互接口,用户经过输入设备可选择和修正三维景交互接口,用户经过输入设备可选择和修正三维景观中物体的方位、察看角度等。观中物体的方位、察看角度等。OpenGL简介简介三、构建三、构建OpenGL运运转环境境将将 OpenGL文件文件dll文件文件夹内的一切内的一切dll文件复制至系文件复制至系统的的system32文件文件夹。如。如C盘为系系统盘的的Windows XP系系统,system32文件文件夹途径途径为“C:WIND
11、OWSsystem32。将将 OpenGL文件文件lib文件文件夹内的一切文件拷内的一切文件拷贝到到VCLib文件文件夹内,如内,如E:SOFTWAREMicrosoft Visual StudioVC98Lib将将 OpenGL文件文件include文件文件夹内的内的gl拷拷贝到到VCinclude文文件件夹内,例如内,例如E:SOFTWAREMicrosoft Visual StudioVC98IncludeOpenGL简介简介四四. Visual C+中新建工程的步中新建工程的步骤和和为运运转OpenGL需作需作的的设置置1、新建工程的步、新建工程的步骤 1菜菜单“文件文件 “新建新建
12、弹出新建出新建对话框框 2选择“Win32 Console Application,选择存放工程存放工程的目的目录,为工程文件起一个名字。如以下工程文件起一个名字。如以下图OpenGL简介简介OpenGL简介简介3 点点击击“完成按完成按钮钮。OpenGL简介简介4 点菜点菜单单“文件文件 “新建新建 弹弹出新建出新建对话对话框,按以下框,按以下图图设设置后,点确定。置后,点确定。OpenGL简介简介2、为为运运转转OpenGL程序,程序,VC+ 6.0需求需求进进展的展的设设置:置: 1 获获得得OpenGL编译编译运运转转所需文件。所需文件。 2 菜菜单单“工程工程 “设设置置 “C/C+
13、选项选项卡卡 “分分类类下拉框下拉框选选“preprocessor即即 “预处预处置器中填入置器中填入OpenGL头头文件目文件目录录的途径。如以下的途径。如以下图图。OpenGL简介简介OpenGL简介简介3 “Link选项选项卡卡 “分分类类下拉框下拉框选选“Input “对对象象库库模模块块中添加中添加“opengl.lib、 “ glu.lib、 “ glut.lib “附加附加库库途径中填入途径中填入OpenGL lib文件的目文件的目录录途径。如途径。如以下以下图图。然后点。然后点“确定按确定按钮钮。OpenGL简介简介OpenGL简介简介#pragma comment(lib,
14、opengl32.lib); #pragma comment(lib, glu.lib); #pragma comment(lib, glut.lib);或者在源文件头文件包含之后加上以下三段语句:或者在源文件头文件包含之后加上以下三段语句:OpenGL简介简介五五. OpenGL的根本语法的根本语法 1、相关库、相关库OpenGL中心库,包含中心库,包含115个最根本的函数,这些函数个最根本的函数,这些函数以以gl为前缀,如:为前缀,如:glColor3f (1.0, 1.0, 1.0); /用于设定绘图的颜色用于设定绘图的颜色 中心库函数用于常规的、中心的图形处置,如建立中心库函数用于常规
15、的、中心的图形处置,如建立各种几何模型,产生光照效果,进展反走样及投影各种几何模型,产生光照效果,进展反走样及投影变换。变换。OpenGL简介简介五五. OpenGL的根本语法的根本语法 1、相关库、相关库OpenGL适用程序库,包含适用程序库,包含43个函数,这些函数以个函数,这些函数以glu为前为前缀,如:缀,如:gluOrtho2D(0.0, 200.0, 0.0, 150.0);/设置投影参数设置投影参数 适用程序库的函数用于实现较复杂的操作,如纹理映射、适用程序库的函数用于实现较复杂的操作,如纹理映射、坐标变换、网格化、曲线曲面以及二次函数物体圆柱、坐标变换、网格化、曲线曲面以及二次
16、函数物体圆柱、球的绘制。球的绘制。OpenGL简介简介五五. OpenGL的根本语法的根本语法 1、相关库、相关库OpenGL适用程序工具包,包含适用程序工具包,包含30多个函数,以多个函数,以glut为前缀,为前缀,如:如:glutInitWindowPosition(100, 120);/设置窗口的位置设置窗口的位置 适用程序工具包主要提供基于窗口的工具,如窗口系统适用程序工具包主要提供基于窗口的工具,如窗口系统的初始化、多窗口管理、菜单管理等。的初始化、多窗口管理、菜单管理等。GLUT库中的窗库中的窗口管理函数不依赖运转环境,因此口管理函数不依赖运转环境,因此GLUT可以在一切的可以在一
17、切的OpenGL平台上运转。平台上运转。OpenGL简介简介五五. OpenGL的根本的根本语法法 2、命名、命名规那么那么OpenGL函数都遵照一个命名商定,函数都遵照一个命名商定,经过这个商定可以了解个商定可以了解函数源于哪个函数源于哪个库,需求参数的个数以及参数的,需求参数的个数以及参数的类型。型。命名命名规那么:那么:如:如:glColor3f (1.0, 1.0, 1.0);gl 表示表示该函数来自中心函数来自中心库gl.h;Color 函数的根命令,表示函数的根命令,表示该函数用于函数用于颜色色设定;定;3f 表示表示该函数有函数有3个浮点个浮点类型的参数;型的参数;OpenGL简
18、介简介五五. OpenGL的根本的根本语法法 2、命名、命名规那么那么有些函数运用一个或多个符号常量,各常量之有些函数运用一个或多个符号常量,各常量之间以符号以符号“|分隔。分隔。OpenGL符号常量均以符号常量均以库前前缀的大写方式开的大写方式开头,各个,各个组成成词间用下划用下划线分开。分开。如:如:glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);GLUT_SINGLE:单缓冲区冲区GLUT_RGB:颜色方式色方式为RGBOpenGL简介简介OpenGL数据类型数据类型含义含义定义为定义为C类型类型C字面值后缀字面值后缀GLbyte8位整数signed
19、charBGLshort16位整数shortSGLint,GLsizei32位整数longLGLfloat,GLclampf32位浮点数floatFGLdouble,GLclampd64位浮点数doubleDGLubyte,GLboolean8位无符号整数unsigned charUbGLshort16位无符号整数unsigned shortUsGLuint,GLenum,GLbitfield32位无符号整数unsigned longUi五五. OpenGL的根本语法的根本语法 3、数据类型、数据类型OpenGL定义有本人的数据类型,这些数据类型可以映射为定义有本人的数据类型,这些数据类型可以
20、映射为常规的常规的C言语的数据类型言语的数据类型OpenGL简介简介六六. OpenGL根本程序分析根本程序分析 初始化初始化firstgl.cpp) 程序的构造:程序的构造:头文件包含头文件包含图形窗口初始化图形窗口初始化init()绘图显示函数绘图显示函数display()显示窗口设置函数显示窗口设置函数reshape()主函数主函数main()OpenGL简介简介利用利用OpenGL绘图,需求引入,需求引入OpenGL中心中心库以及其他需求以及其他需求运用的运用的库的的头文件。由于文件。由于OpenGL没有包含窗口系没有包含窗口系统,因此,因此还需求引入窗口系需求引入窗口系统,在,在wi
21、ndows操作系操作系统下,下,应包含包含windows.h文件。文件。#include windows.h#include /本例运用本例运用glut库函数函数实现窗口管理窗口管理六六. OpenGL根本程序分析根本程序分析 first.cpp头文件包含头文件包含OpenGL简介简介假假设运用运用gl或或glu库函数函数实现窗口管理,那么包含窗口管理,那么包含语句句应写写为:#include#include六六. OpenGL根本程序分析根本程序分析 first.cpp头文件包含头文件包含OpenGL简介简介初始化函数初始化函数init() 分析:分析:void init(void) glC
22、learColor(0.0,0.0,0.0,0.0); /设置去除颜色设置去除颜色 glShadeModel(GL_FLAT); /设置着色模型,可选择的参数为设置着色模型,可选择的参数为 :GL_FLAT:单色着色:单色着色GL_SMOOTH:平滑着色:平滑着色 六六. OpenGL根本程序分析根本程序分析 first.cpp图形窗口初始化图形窗口初始化init()OpenGL简介简介void display(void) glClear(GL_COLOR_BUFFER_BIT); /去除颜色缓冲区,其效果去除颜色缓冲区,其效果为将整个窗口去除为当前去除颜色为将整个窗口去除为当前去除颜色glB
23、egin(GL_LINE_STRIP); /设置绘制延续直线设置绘制延续直线 glColor3f(1.0,0.0,0.0); /设置绘制颜色,即前风光,颜色参设置绘制颜色,即前风光,颜色参数是比例值,值域数是比例值,值域0, 1 glVertex3f(0.25,0.25,0.0); /点坐标点坐标 glVertex3f(0.75,0.75,0.0); glVertex3f(0.75,0.25,0.0); glVertex3f(0.25,0.25,0.0); glEnd(); glFlush(); /强迫之前所发出的强迫之前所发出的OpenGL命令开场执行,并保证它们命令开场执行,并保证它们可以
24、在有限的时间内完成。可以在有限的时间内完成。六六. OpenGL根本程序分析根本程序分析 first.cpp绘图显示函数绘图显示函数display()OpenGL简介简介【注】【注】OpenGL常用的混合色常用的混合色混合色混合色红色成分(红色成分(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.9
25、80.040.70紫红紫红0.600.400.70白白1.01.01.0OpenGL简介简介void reshape(int w,int h)glMatrixMode (GL_PROJECTION); /指定投影矩阵为当前矩指定投影矩阵为当前矩阵阵glLoadIdentity(); /该函数重置当前指定的矩阵为单位矩阵该函数重置当前指定的矩阵为单位矩阵 gluOrtho2D (0.0, 1.0, 0.0, 1.0); /该函数把原点该函数把原点0,0放在最放在最左下角的位置,并设置单位长度。左下角的位置,并设置单位长度。六六. OpenGL根本程序分析根本程序分析 first.cpp显示窗口设
26、置函数显示窗口设置函数reshape()OpenGL简介简介/*窗口管理窗口管理*/ glutInit(&argc,argv); /初始化初始化GLUT并并处处置命令行参数,置命令行参数,应应在在调调用其用其它函数前它函数前调调用用 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /指定运用指定运用单缓单缓存存RGBA颜颜色方式色方式 glutInitWindowSize(640,480); /指定窗口的大小,指定窗口的大小,单单位位为为像素像素 glutInitWindowPosition(100,100); /指定窗口左上角在屏幕上的位置指定窗口左上角
27、在屏幕上的位置 glutCreateWindow(“OpenGL初始化初始化); /该该函数前往一个函数前往一个标识标识符,独符,独一的一的标识标识新建的窗口新建的窗口 init(); /调调用用图图形窗口初始化函数形窗口初始化函数六六. OpenGL根本程序分析根本程序分析 first.cpp主函数主函数void main(int argc, char* argv)OpenGL简介简介/*回回调调函数函数*/ glutReshapeFunc(reshape); /注册重画回注册重画回调调函数函数 glutDisplayFunc(display); /注册注册显显示回示回调调函数函数 glut
28、MainLoop(); /进进入入GLUT事件事件处处置循置循环环,让让一切与一切与“事件有关事件有关的函数的函数调调用都无限循用都无限循环环。 六六. OpenGL根本程序分析根本程序分析 first.cpp主函数主函数void main(int argc, char* argv)OpenGL简介简介七、关于坐标系统定义函数的阐明:七、关于坐标系统定义函数的阐明:OpenGL在绘制最终图形时所运用的坐标系统,决议了图像在绘制最终图形时所运用的坐标系统,决议了图像将如何映射到屏幕上。将如何映射到屏幕上。glOrtho() 该函数创建了一该函数创建了一个正交平行的三个正交平行的三维视景体,与之维
29、视景体,与之相顺应的映射函相顺应的映射函数中的点坐标应数中的点坐标应该是三维的。该是三维的。OpenGL简介简介glOrtho()函数用途:设置或修正修剪空间的范围函数用途:设置或修正修剪空间的范围句法:句法:void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);阐明:这个函数描画了一个平行修剪空间。这种投影意味着离阐明:这个函数描画了一个平行修剪空间。这种投影意味着离察看者较远的对象看上去不会变小与透视投影相反。在察看者较远的对象看上去不会
30、变小与透视投影相反。在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,上边和下边是最小和最大的值,上边和下边是最小和最大的Y值,近处和远处是最小和最大值,近处和远处是最小和最大的的Z值。值。七、关于坐标系统定义函数的阐明:七、关于坐标系统定义函数的阐明:OpenGL简介简介以以glOrtho()函数定函数定义坐坐标系系统的代的代码 glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); /视景体坐景体坐标系大小按比例确定系大小按比例确定 glBegin(GL_POLOYGON); glVertex3f
31、(0.25, 0.25,0.0); glVertex3f(0.75, 0.25,0.0); glVertex3f(0.75, 0.75,0.0); /以比例方式确定以比例方式确定视景体中点的位置景体中点的位置 glEnd(); glFlush(); 七、关于坐标系统定义函数的阐明:七、关于坐标系统定义函数的阐明:OpenGL简介简介以以glOrtho()函数定函数定义坐坐标系系统的代的代码glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h,-1.0,1.0);/以窗口以窗口实践大小定践大小定义视景体的坐景体的坐标系系glBegin(GL_POLOYGON);g
32、lVertex3f(100.0, 100.0,0.0);glVertex3f(500.0,500.0,0.0);glVertex3f(500.0, 100.0,0.0); /以坐以坐标值确定点在确定点在视景体中的位置景体中的位置glEnd();glFlush();七、关于坐标系统定义函数的阐明:七、关于坐标系统定义函数的阐明:OpenGL简介简介假设绘制的图空间本身就是二维的,可以运用假设绘制的图空间本身就是二维的,可以运用gluOrtho2D函数。函数。句法:句法:void gluOrtho2D 左下角左下角x坐标,右上角坐标,右上角x坐标,坐标,左下角左下角y坐标,右上角坐标,右上角y坐标
33、坐标;描画:用这个函数描画的平行空间,描画:用这个函数描画的平行空间,near和和far默以为默以为-1和和1 ,坐标系原点的,坐标系原点的Z坐标为坐标为0.0,所以图像相当与映射到,所以图像相当与映射到Z=0的坐标面上。的坐标面上。七、关于坐标系统定义函数的阐明:七、关于坐标系统定义函数的阐明:OpenGL简介简介【留意】以【留意】以0.0,1.0,0.0,1.0,-1.0,1.0来定义窗口来定义窗口坐标的大小容易产生浮点数的溢出。如在坐标的大小容易产生浮点数的溢出。如在glVertex3f()函数中将坐标值设置为函数中将坐标值设置为0.13等数值,会呵斥计算出的坐等数值,会呵斥计算出的坐标值超越标值超越float的范围。的范围。七、关于坐标系统定义函数的阐明:七、关于坐标系统定义函数的阐明: