版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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通过一套精心定义的接口函数,实现图形软件与系统的交互。Ope
3、nGL 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采用双缓存技术实
6、现动画效果。9、交互技术: OpenGL提供了方便的三维图形人机交互接口,用户通过输入设备可选择和修改三维景观中物体的方位、观察角度等。三、构建OpenGL运行环境将 OpenGL文件dll文件夹内的所有dll文件复制至系统的system32文件夹。如C盘为系统盘的Windows XP系统,system32文件夹路径为“C:WINDOWSsystem32”。将 OpenGL文件lib文件夹内的所有文件拷贝到VCLib文件夹内,如E:SOFTWAREMicrosoft Visual StudioVC98Lib将 OpenGL文件include文件夹内的gl拷贝到VCinclude文件夹内,例如E
7、:SOFTWAREMicrosoft Visual StudioVC98Include四. Visual C+中新建工程的步骤和为运行OpenGL需作的设置1、新建工程的步骤 1)菜单“文件” “新建” 弹出新建对话框 2)选择“Win32 Console Application”,选择存放工程的目录,为工程文件起一个名字。(如下图)3)点击“完成”按钮。4)点菜单“文件” “新建” 弹出新建对话框,按下图设置后,点确定。2、为运行OpenGL程序,VC+ 6.0需要进行的设置: 1)取得OpenGL编译运行所需文件。 2)菜单“工程” “设置” “C/C+”选项卡 “分类”下拉框选“prep
8、rocessor”即 “预处理器”中填入OpenGL头文件目录的路径。如下图。3)“Link”选项卡 “分类”下拉框选“Input” “对象库模块”中增加“opengl.lib”、 “ glu.lib”、 “ glut.lib” “附加库路径”中填入OpenGL lib文件的目录路径。如下图。然后点“确定”按钮。#pragma comment(lib, opengl32.lib); #pragma comment(lib, glu.lib); #pragma comment(lib, glut.lib);或者在源文件头文件包含之后加上以下三段语句:五. OpenGL的基本语法 1、相关库Ope
9、nGL核心库,包含115个最基本的函数,这些函数以gl为前缀,如:glColor3f (1.0, 1.0, 1.0); /用于设定绘图的颜色 核心库函数用于常规的、核心的图形处理,如建立各种几何模型,产生光照效果,进行反走样及投影变换。五. OpenGL的基本语法 1、相关库OpenGL实用程序库,包含43个函数,这些函数以glu为前缀,如:gluOrtho2D(0.0, 200.0, 0.0, 150.0);/设置投影参数 实用程序库的函数用于实现较复杂的操作,如纹理映射、坐标变换、网格化、曲线曲面以及二次函数物体(圆柱、球)的绘制。五. OpenGL的基本语法 1、相关库OpenGL实用程
10、序工具包,包含30多个函数,以glut为前缀,如:glutInitWindowPosition(100, 120);/设置窗口的位置 实用程序工具包主要提供基于窗口的工具,如窗口系统的初始化、多窗口管理、菜单管理等。GLUT库中的窗口管理函数不依赖运行环境,因此GLUT可以在所有的OpenGL平台上运行。五. OpenGL的基本语法 2、命名规则OpenGL函数都遵循一个命名约定,通过这个约定可以了解函数源于哪个库,需要参数的个数以及参数的类型。命名规则:如:glColor3f (1.0, 1.0, 1.0);gl 表示该函数来自核心库gl.h;Color 函数的根命令,表示该函数用于颜色设定
11、;3f 表示该函数有3个浮点类型的参数;五. OpenGL的基本语法 2、命名规则有些函数使用一个或多个符号常量,各常量之间以符号“|”分隔。OpenGL符号常量均以库前缀的大写形式开头,各个组成词间用下划线分开。如:glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);GLUT_SINGLE:单缓冲区GLUT_RGB:颜色模式为RGBOpenGL数据类型含义定义为C类型C字面值后缀GLbyte8位整数signed charBGLshort16位整数shortSGLint,GLsizei32位整数longLGLfloat,GLclampf32位浮点数floatFG
12、Ldouble,GLclampd64位浮点数doubleDGLubyte,GLboolean8位无符号整数unsigned charUbGLshort16位无符号整数unsigned shortUsGLuint,GLenum,GLbitfield32位无符号整数unsigned longUi五. OpenGL的基本语法 3、数据类型OpenGL定义有自己的数据类型,这些数据类型可以映射为常规的C语言的数据类型六. OpenGL基本程序剖析 (初始化firstgl.cpp) 程序的结构:头文件包含图形窗口初始化init()绘图显示函数display()显示窗口设置函数reshape()主函数ma
13、in()利用OpenGL绘图,需要引入OpenGL核心库以及其他需要使用的库的头文件。由于OpenGL没有包含窗口系统,因此还需要引入窗口系统,在windows操作系统下,应包含windows.h文件。#include windows.h#include /本例使用glut库函数实现窗口管理六. OpenGL基本程序剖析 first.cpp头文件包含如果使用gl或glu库函数实现窗口管理,则包含语句应写为:#include#include六. OpenGL基本程序剖析 first.cpp头文件包含初始化函数init() 剖析:void init(void) glClearColor(0.0,0
14、.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); /设置绘制连续直线 glColor3f(1.0,0.0,0.0); /设置绘制颜色,即前景色,颜色参数是比例值,值域0, 1 glVertex3f(
15、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常用的混合色混合色红色成分(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
16、青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.0void reshape(int w,int h)glMatrixMode (GL_PROJECTION); /指定投影矩阵为当前矩阵glLoadIdentity(); /该函数重置当前指定的矩阵为单位矩阵 gluOrtho2D (0.0, 1.0, 0.0, 1.0); /该函数把原点(0,0)放在最左下角的位置,并设置单位长度。六. OpenGL基本程序剖析 first.cpp显示窗
17、口设置函数reshape()/*窗口管理*/ glutInit(&argc,argv); /初始化GLUT并处理命令行参数,应在调用其它函数前调用 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /指定使用单缓存RGBA颜色模式 glutInitWindowSize(640,480); /指定窗口的大小,单位为像素 glutInitWindowPosition(100,100); /指定窗口左上角在屏幕上的位置 glutCreateWindow(“OpenGL初始化”); /该函数返回一个标识符,唯一的标识新建的窗口 init(); /调用图形窗口初始化函
18、数六. OpenGL基本程序剖析 first.cpp主函数void main(int argc, char* argv)/*回调函数*/ glutReshapeFunc(reshape); /注册重画回调函数 glutDisplayFunc(display); /注册显示回调函数 glutMainLoop(); /进入GLUT事件处理循环,让所有与“事件”有关的函数调用都无限循环。 六. OpenGL基本程序剖析 first.cpp主函数void main(int argc, char* argv)七、关于坐标系统定义函数的说明:OpenGL在绘制最终图形时所使用的坐标系统,决定了图像将如何映
19、射到屏幕上。glOrtho() 该函数创建了一个正交平行的三维视景体,与之相适应的映射函数中的点坐标应该是三维的。glOrtho()函数用途:设置或修改修剪空间的范围句法:void glOrtho(GLdouble 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_POLOYGON); glVertex3f(0.25, 0.25,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省佛山市2026年七年级下学期数学期中考试卷附答案
- 2026年退役军人保障法优抚政策题
- 2026年能源局煤炭行业管理岗面试模拟题
- 2026年世界血栓日线上血管健康问答及深静脉血栓预防肺栓塞识别题库
- 2026年从实战角度解读题海策略
- 2026年传统维修转岗机器人维护题库
- 2026年心理学科普心理健康与心理调适方法题库
- 西安银行咸阳分行2026秋招数据挖掘岗笔试题详解
- 2026年糖画制作技艺传承师考试糖画拉丝甩丝技法模拟题
- 2026年中国中铁股份有限公司校园招聘笔试模拟题及工程管理
- 工厂6S管理标准
- 《新能源发电与控制技术 第4版》 课件 第1章 新能源发电与控制技术导论
- DL-T5418-2009火电厂烟气脱硫吸收塔施工及验收规程
- (高清版)JTG D50-2017 公路沥青路面设计规范
- 安全隐患排查及整改制度
- 2024年福建烟草海晟投资管理有限公司招聘笔试参考题库附带答案详解
- 人教版小学四年级信息技术上册知识点整理与归纳
- 2024年新华文轩出版传媒股份有限公司招聘笔试参考题库含答案解析
- 小学语文文言文教学策略
- 《肿瘤分子生物学》课件
- 记账凭证封面直接打印模板
评论
0/150
提交评论