OpenGL图形软件包.ppt

上传人:小飞机 文档编号:5441895 上传时间:2023-07-07 格式:PPT 页数:40 大小:585.50KB
返回 下载 相关 举报
OpenGL图形软件包.ppt_第1页
第1页 / 共40页
OpenGL图形软件包.ppt_第2页
第2页 / 共40页
OpenGL图形软件包.ppt_第3页
第3页 / 共40页
OpenGL图形软件包.ppt_第4页
第4页 / 共40页
OpenGL图形软件包.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《OpenGL图形软件包.ppt》由会员分享,可在线阅读,更多相关《OpenGL图形软件包.ppt(40页珍藏版)》请在三一办公上搜索。

1、OpenGL简介 OpenGL坐标系的设置,一、OpenGL是什么开放图形库OpenGL(Open Graphics Library)是图形硬件的一个软件接口,它实现了各种二维和三维的高级图形处理技术,是实现逼真的三维效果与建立交互式三维景观的强大工具。OpenGL独立于硬件系统和操作系统,可以在各种类型的计算机、各种操作系统上使用,还可以在网络环境下以客户-服务器模式工作,具有很高的可移植性。OpenGL中的图形函数定义为独立于任何程序设计语言的一组规范,在各种编程语言中,如C+、FORTRAN、JAVA等都可以调用OpenGL的库函数。,OpenGL是什么OpenGL是一套应用程序编程接口

2、(Application Programming Interface,API),借助于OpenGL编程可实现对图形硬件的访问。OpenGL有两个重要的优点:1、OpenGL非常接近底层硬件,使用OpenGL编写的程序具有较高的运行效率;2、OpenGL易于掌握和使用。,【注】API:在计算机图形学的诸多应用领域,如交互游戏、交互网站、CAD软件包设计中,应用软件各项功能的实现依赖硬件和底层软件。为避免应用程序所共有的标准功能代码重复编写,也为了程序员在编写代码时不必关心图形硬件的细节,同时提高应用程序的可移植性,API应运而生。API通过一套精心定义的接口函数,实现图形软件与系统的交互。,Op

3、enGL API:OpenGL为多种图形硬件所支持,它包含200多个可用于构建应用程序的函数。几乎所有的计算机和操作系统中都有OpenGL的相应实现,使用OpenGL编写的程序可被移植到任何支持该接口的计算机。一个典型的OpenGL应用程序可运行在具有任意实现方式的平台中。此外,OpenGL具有高度的稳定性。,总结OpenGL的优势主要体现在下面三方面:1.与C语言紧密结合OpenGL命令最初就是用C语言函数来描述的,对于学过C语言的人而言,OpenGL容易理解和掌握的。2.强大的可移植性与DirectX相比较,OpenGL有更强的可移植性。DirectX基于Windows系统,游戏开发还必须

4、基于XBOX游戏机。OpenGL不依赖操作系统,真正做到与硬件无关,与平台无关。3.高性能的图形渲染OpenGL是一个工业标准,各显卡厂家无一不对OpenGL提供强力支持,使得OpenGL得以广泛用于各行业图形软件的开发。,OpenGL的主要功能1、模型绘制:OpenGL能够绘制点、线和多边形,并利用这些基本图元,几乎可以构造出所有的三维模型。OpenGL还提供球、多面体、茶壶等复杂形体,以及Bezier、NURBS曲线曲面的绘制函数。2、模型观察:OpenGL提供完备的几何变换函数,使用户可以选择三维模型的观察方式。3、颜色模式:OpenGL提供两种颜色模式RGBA模式和颜色索引模式;三维模

5、型着色有平面着色模式和光滑着色模式。,OpenGL的主要功能4、光照应用:OpenGL依据光线追踪理论,提供多种光源模拟函数,以及模型表面反射特征,即模拟材质属性的函数,能够实现三维场景的光照模拟。5、图形效果增强:OpenGL提供了一系列增强三维景观图形效果的函数,包括反走样、混合和雾化。6、位图和图像处理:OpenGL提供了一系列针对位图和图像进行操作的函数。位图和图像的数据均采用像素矩阵来表示。,OpenGL的主要功能7、纹理映射:OpenGL提供了一系列纹理映射函数,可以方便的把真实图像贴到景物的多边形上,从而绘制逼真的三维景观。8、实时动画:OpenGL采用双缓存技术实现动画效果。9

6、、交互技术:OpenGL提供了方便的三维图形人机交互接口,用户通过输入设备可选择和修改三维景观中物体的方位、观察角度等。,三、构建OpenGL运行环境将 OpenGL文件dll文件夹内的所有dll文件复制至系统的system32文件夹。如C盘为系统盘的Windows XP系统,system32文件夹路径为“C:WINDOWSsystem32”。将 OpenGL文件lib文件夹内的所有文件拷贝到VCLib文件夹内,如E:SOFTWAREMicrosoft Visual StudioVC98Lib将 OpenGL文件include文件夹内的gl拷贝到VCinclude文件夹内,例如E:SOFTWA

7、REMicrosoft Visual StudioVC98Include,四.Visual C+中新建工程的步骤和为运行OpenGL需作的设置1、新建工程的步骤 1)菜单“文件”“新建”弹出新建对话框 2)选择“Win32 Console Application”,选择存放工程的目录,为工程文件起一个名字。(如下图),3)点击“完成”按钮。,4)点菜单“文件”“新建”弹出新建对话框,按下图设置后,点确定。,#pragma comment(lib,opengl32.lib);#pragma comment(lib,glu.lib);#pragma comment(lib,glut.lib);,或

8、者在源文件头文件包含之后加上以下三段语句:,五.OpenGL的基本语法 1、相关库OpenGL核心库,包含115个最基本的函数,这些函数以gl为前缀,如:glColor3f(1.0,1.0,1.0);/用于设定绘图的颜色 核心库函数用于常规的、核心的图形处理,如建立各种几何模型,产生光照效果,进行反走样及投影变换。,五.OpenGL的基本语法 1、相关库OpenGL实用程序库,包含43个函数,这些函数以glu为前缀,如:gluOrtho2D(0.0,200.0,0.0,150.0);/设置投影参数 实用程序库的函数用于实现较复杂的操作,如纹理映射、坐标变换、网格化、曲线曲面以及二次函数物体(圆

9、柱、球)的绘制。,五.OpenGL的基本语法 1、相关库OpenGL实用程序工具包,包含30多个函数,以glut为前缀,如:glutInitWindowPosition(100,120);/设置窗口的位置 实用程序工具包主要提供基于窗口的工具,如窗口系统的初始化、多窗口管理、菜单管理等。GLUT库中的窗口管理函数不依赖运行环境,因此GLUT可以在所有的OpenGL平台上运行。,五.OpenGL的基本语法 2、命名规则OpenGL函数都遵循一个命名约定,通过这个约定可以了解函数源于哪个库,需要参数的个数以及参数的类型。命名规则:如:glColor3f(1.0,1.0,1.0);gl 表示该函数来

10、自核心库gl.h;Color 函数的根命令,表示该函数用于颜色设定;3f 表示该函数有3个浮点类型的参数;,五.OpenGL的基本语法 2、命名规则有些函数使用一个或多个符号常量,各常量之间以符号“|”分隔。OpenGL符号常量均以库前缀的大写形式开头,各个组成词间用下划线分开。如:glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);GLUT_SINGLE:单缓冲区GLUT_RGB:颜色模式为RGB,五.OpenGL的基本语法 3、数据类型OpenGL定义有自己的数据类型,这些数据类型可以映射为常规的C语言的数据类型,六.OpenGL基本程序剖析(初始化firs

11、tgl.cpp)程序的结构:头文件包含图形窗口初始化init()绘图显示函数display()显示窗口设置函数reshape()主函数main(),利用OpenGL绘图,需要引入OpenGL核心库以及其他需要使用的库的头文件。由于OpenGL没有包含窗口系统,因此还需要引入窗口系统,在windows操作系统下,应包含windows.h文件。#include windows.h#include/本例使用glut库函数实现窗口管理,六.OpenGL基本程序剖析 first.cpp头文件包含,如果使用gl或glu库函数实现窗口管理,则包含语句应写为:#include#include,六.OpenGL

12、基本程序剖析 first.cpp头文件包含,初始化函数init()剖析:void init(void)glClearColor(0.0,0.0,0.0,0.0);/设置清除颜色 glShadeModel(GL_FLAT);/设置着色模型,可选择的参数为:GL_FLAT:单色着色GL_SMOOTH:平滑着色,六.OpenGL基本程序剖析 first.cpp图形窗口初始化init(),void display(void)glClear(GL_COLOR_BUFFER_BIT);/清除颜色缓冲区,其效果为将整个窗口清除为当前清除颜色glBegin(GL_LINE_STRIP);/设置绘制连续直线 g

13、lColor3f(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命令开始执行,并保证它们能够在有限的时间内完成。,六.OpenGL基本程序剖析 first.cpp绘图显示函数display(),【注】OpenGL常用的混合色,void reshape(int w,int h)gl

14、MatrixMode(GL_PROJECTION);/指定投影矩阵为当前矩阵glLoadIdentity();/该函数重置当前指定的矩阵为单位矩阵 gluOrtho2D(0.0,1.0,0.0,1.0);/该函数把原点(0,0)放在最左下角的位置,并设置单位长度。,六.OpenGL基本程序剖析 first.cpp显示窗口设置函数reshape(),/*窗口管理*/glutInit(/调用图形窗口初始化函数,六.OpenGL基本程序剖析 first.cpp主函数void main(int argc,char*argv),/*回调函数*/glutReshapeFunc(reshape);/注册重画

15、回调函数 glutDisplayFunc(display);/注册显示回调函数 glutMainLoop();/进入GLUT事件处理循环,让所有与“事件”有关的函数调用都无限循环。,六.OpenGL基本程序剖析 first.cpp主函数void main(int argc,char*argv),七、关于坐标系统定义函数的说明:OpenGL在绘制最终图形时所使用的坐标系统,决定了图像将如何映射到屏幕上。,glOrtho()该函数创建了一个正交平行的三维视景体,与之相适应的映射函数中的点坐标应该是三维的。,glOrtho()函数用途:设置或修改修剪空间的范围句法:void glOrtho(GLdo

16、uble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);说明:这个函数描述了一个平行修剪空间。这种投影意味着离观察者较远的对象看上去不会变小(与透视投影相反)。在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,上边和下边是最小和最大的Y值,近处和远处是最小和最大的Z值。,七、关于坐标系统定义函数的说明:,以glOrtho()函数定义坐标系统的代码 glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);/视景体坐标系大小按比例确定 glBegin(GL_POL

17、OYGON);glVertex3f(0.25,0.25,0.0);glVertex3f(0.75,0.25,0.0);glVertex3f(0.75,0.75,0.0);/以比例方式确定视景体中点的位置 glEnd();glFlush();,七、关于坐标系统定义函数的说明:,以glOrtho()函数定义坐标系统的代码glOrtho(0.0,(GLdouble)w,0.0,(GLdouble)h,-1.0,1.0);/以窗口实际大小定义视景体的坐标系glBegin(GL_POLOYGON);glVertex3f(100.0,100.0,0.0);glVertex3f(500.0,500.0,0.

18、0);glVertex3f(500.0,100.0,0.0);/以坐标值确定点在视景体中的位置glEnd();glFlush();,七、关于坐标系统定义函数的说明:,如果绘制的图空间本身就是二维的,可以使用gluOrtho2D函数。句法:void gluOrtho2D(左下角x坐标,右上角x坐标,左下角y坐标,右上角y坐标);描述:用这个函数描述的平行空间,near和far默认为-1和1,坐标系原点的Z坐标为0.0,所以图像相当与映射到Z=0的坐标面上。,七、关于坐标系统定义函数的说明:,【注意】以(0.0,1.0,0.0,1.0,-1.0,1.0)来定义窗口坐标的大小容易产生浮点数的溢出。如在glVertex3f()函数中将坐标值设置为0.13等数值,会造成计算出的坐标值超过float的范围。,七、关于坐标系统定义函数的说明:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号