OpenGL 计算机图形学

合集下载

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告
在计算机图形学课程中,实验是不可或缺的一部分。

通过实验,我们可以更好地理解课程中所学的知识,并且在实践中掌握这些
知识。

在本次实验中,我学习了如何使用OpenGL绘制三维图形,并了解了一些基本的图形变换和视图变换。

首先,我们需要通过OpenGL的基本命令来绘制基本图形,例
如线段、矩形、圆等。

这些基本的绘制命令需要首先设置OpenGL 的状态,例如绘制颜色、线段宽度等,才能正确地绘制出所需的
图形。

然后,在实验中我们学习了图形的变换。

变换是指通过一定的
规则将图形的形状、位置、大小等进行改变。

我们可以通过平移、旋转、缩放等变换来改变图形。

变换需要按照一定的顺序进行,
例如先进行旋转再进行平移等。

在OpenGL中,我们可以通过设
置变换矩阵来完成图形的变换。

变换矩阵包含了平移、旋转、缩
放等信息,通过矩阵乘法可以完成图形的复合变换。

最后,视图变换是指将三维场景中的图形投影到二维平面上,
成为我们所见到的图形。

在实验中,我们学习了透视投影和正交
投影两种方式。

透视投影是指将场景中的图形按照视点不同而产
生不同的远近缩放,使得图形呈现出三维感。

而正交投影则是简单地将场景中的图形按照平行投影的方式呈现在屏幕上。

在OpenGL中,我们可以通过设置视图矩阵和投影矩阵来完成视图变换。

通过本次实验,我对于计算机图形学有了更深入的了解,并掌握了一些基本的图形绘制和变换知识。

在今后的学习中,我将继续学习更高级的图形绘制技术,并应用于实际的项目中。

计算机图形学实验报告-OpenGL基本使用

计算机图形学实验报告-OpenGL基本使用

学生实验实习报告册学年学期:2016-2017学年 春□√秋学期课程名称:大学计算机基础学生学院:通信与信息工程学院专业班级:学生学号:学生姓名:联系电话:重庆邮电大学教务处印制实验实习名OpenGL基本使用指导教师秦红星考核成绩课程名称计算机图形学A 课程编号实验实习地点信息科技大厦S306 完成日期学生姓名学生学号学院专业广电与数字媒体类所在班级教师评语教师签名:年月日一、实验实习目的及要求目的:认识了解OpenGL的性质、功能要求:1.利用OpenGL绘制一个简单的场景:比如球体、正方体2.加入灯光3.实现交互操作:平移、缩放、旋转二、实验实习设备(环境)及要求(软硬件条件)采用Microsoft Visual C 2010生成环境并用C++编写程序三、实验实习内容与步骤内容:背景为黑色,在点光源下,能够实现平移、缩放、旋转的球。

步骤:建立立体-->添加光照-->添加变换1.先写“主函数”,在主函数中将窗口生成好。

2.在“自定义函数1”中对窗口进行清除、填色等操作。

3.在“自定义函数1”中设置点光源,设置光照的各种参数。

4.在“自定义函数1”中设置平移、缩放、旋转及各参数。

5.在“自定义函数2”中设置平移和缩放的循环。

6.在主函数中调用这两个自定义函数,并且在主函数里面用“自定义函数1”为参数调用glutDisplayFunc()来注册一个绘图函数。

其次用空闲回调函数glutIdleFunc()来使球体不停地循环有缩放、平移功能的函数。

实现动画。

四、实验实习过程或算法(源程序、代码)#include<GL/glut.h>GLfloat angle = 0.0f;GLfloat multiply = 0.0f;void display(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //设置窗口里面的背景颜色glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(90.0f, 1.0f, 1.0f, 20.0f);glLoadIdentity();gluLookAt(0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);{//设置一个点光源GLfloat light_position[] = { 0.5f,0.0f,0.0f,1.0f };//(xyzw)w为1时代表点光源,0时代表方向光源GLfloat light_ambient[] = { 0.5f,0.5f,0.5f,1.0f };//(0001)GLfloat light_diffuse[] = { 1.0f,1.0f,1.0f,1.0f };//(1111)GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };//(1111)glLightfv(GL_LIGHT0, GL_POSITION, light_position);glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);//光源环境光强值glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);//光源漫反射强值glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);//光源镜面反射强值glEnable(GL_LIGHT0);//打开该光源glEnable(GL_LIGHTING);//打开光照}{glRotatef(angle, 0.0f, 1.0f, 0.0f);glTranslatef(0.0f, 0.0f, 0.6f); //平移glScaled(multiply, multiply, multiply); //缩放glutSolidSphere(0.2, 50, 50);}glutSwapBuffers();}void rotateAndzoom(void) //旋转和缩放{angle += 1.0f;if (angle >= 360.0f)angle = 0.0f;display();//设置旋转multiply += 0.01f;if (multiply >= 2.0f)// multiply -= 0.01f;//if (multiply <= 1.0f)multiply = 1.0f;display();//设置缩放}int main(int argc, char* argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);glutInitWindowPosition(400, 50);glutInitWindowSize(800, 800);glutCreateWindow("立体");glutDisplayFunc(&display);glutIdleFunc(&rotateAndzoom);//旋转glutMainLoop();//调用该函数启动程序,所有以创建的窗口将会显示return 0;}五、实验实习结果分析和(或)源程序调试过程实验实习名直线扫面和区域填充实现指导教师考核成绩课程名称课程编号实验实习地点完成日期学生姓名学生学号学院专业通信与信息工程学院广电与数字媒体类所在班级教师评语教师签名:年月日一、实验实习目的及要求项目目的:熟悉光栅图形学中的相关算法项目要求:1.应用OpenGL点绘制函数直线与区域2.采用直线扫面算法绘制一条线段,直线有离散点组成3.利用区域填充算法绘制多边形区域,区域由离散点组成二、实验实习设备(环境)及要求(软硬件条件)采用Microsoft Visual C 2010生成环境并用C++编写程序三、实验实习内容与步骤内容:1.用DDA算法实现点绘制直线。

OpenGL学习笔记:三维数学基础(一)坐标系、向量、矩阵

OpenGL学习笔记:三维数学基础(一)坐标系、向量、矩阵

OpenGL学习笔记:三维数学基础(⼀)坐标系、向量、矩阵接触OpenGL和计算机图形学有⼀段时间了,⼀直想写⼀点东西,记录⾃⼰的学习历程,或许也能够为有意愿向计算机图形学发展的菜鸟们提供⼀条捷径。

闲话不多说,本章主要介绍计算机图形学中三维数学的⼀些基础知识,主要包括2D、3D笛卡尔坐标系,向量、矩阵的数学和⼏何意义以及公式。

由于篇幅限制,其中的推导过程本⽂不作叙述,感兴趣的读者可以去看《3D数学基础+图形与游戏开发》,已上传,链接地址在本⽂末尾。

⼀、计算机图形学计算机图形学(Computer Graphics)是⼀种使⽤数学算法将⼆维或三维图形转化为计算机显⽰器的栅格形式的科学。

其⼴泛应⽤于游戏、动画、仿真、虚拟现实(VR)、增强现实(AR)等领域。

在数学之中,研究⾃然数和整数的领域称为离散数学,研究实数的领域称作连续数学。

在计算机图形学中,为虚拟世界选择度量单位的关键是选择离散的精度。

⼀种错误的观点认为short、int是离散的,⽽float、double是连续的,⽽事实上,这些数据类型都是离散的。

于是,计算机图形学有如下准则:计算机图形学第⼀准则:近似原则——如果它看上去是对的,它就是对的。

⼆、笛卡尔坐标系2D笛卡尔坐标系是⼀个精确定位点的框架。

2D坐标的标准表⽰法是(x,y),相信⼤家初中都学过。

⼀般,标准的笛卡尔坐标系是x轴向右,y轴向上。

⽽计算机图形学中的屏幕坐标往往是x轴向右,y轴向下。

如图1所⽰。

图1:2D笛卡尔坐标系和2D屏幕坐标系3D笛卡尔坐标系类似,增加了第三个维度,z轴。

3D坐标系分为完全不同的2种坐标系,左⼿坐标系和右⼿坐标系。

判断⽅法为,左⼿坐标系:伸出左⼿,让拇指和⾷指成“L”形,⼤拇指向右,⾷指向上,其余⼿指指向前⽅。

此时,拇指、⾷指和其余三指分别代表x、y、z轴的正⽅向。

右⼿坐标系,相同,只是把左⼿换成右⼿。

如图2所⽰。

图2:左⼿坐标系与右⼿坐标系其中左⼿坐标系⼴泛应⽤于计算机图形学、D3D之中,⽽右⼿坐标系⼴泛应⽤于OpenGL、线性代数、3DSMax之中。

OpenGL在计算机图形学中的应用研究

OpenGL在计算机图形学中的应用研究
g n be G _ O l a l L F G) E (
g of( L n m p a e T P aa l g G e u n m ,Y E p rm) F v
( ) 角 网格 模 型 a三
( ) 启 光 照 b开
其 中参数 pa 通常 取 G _ O _ D G - nme L F G MO E、 L
的算法将 真实 物 体转化 成 能在计 算机 上表 示 的 景物模 型 , 杂物 体 一般 是 表示 成 三角 网状 的模 型 复 结构 。 ( ) 影及 视 口变换 。 表 示 出 的模 型 放 在 三 2投 把 维空 间中的合适的位置 , 并且设置视点(e pi ) v w o t i n, 使得 模 型 居 中显示 并 且 将 观 察 者 感 兴 趣 的一 面 展 现在屏 幕上 。 2 Op n e GL简介 ( ) 照 、 质 、 等 的设 置 。 模 型 展 示 在 屏 3光 材 雾 将 O eG pn L实 际 上 是 一 个 丰 富 的 三 维 图 形 函数 幕上 以后 , 就开 始 真正 的模 拟 真实 物体了 , 这里主要 p n L中 的光照 、 材质 、 化 函数 来 对 真 雾 库 , 了具有 基本 的 O eG 除 pn L函数外 , 还支 持其 他 四 通过设 置 O eG 类 函 数 : pn L实 用 库 、 pn L辅 助 库 、 n o s 实物 体进 行模拟 。 O eG O eG Widw 专 用 库 函数 、 n 2A I Wi3 P 函数 删 。 pn L的 这些 函 O eG ( ) 示三 维 图形 。 4显 数有 强 大 的功 能 , 比如 : 以绘制 三 维物 体 , 以对 31 建立基 本模 型 可 可 . 物体 进行光照 、 明暗处理 、 材质设置 、 纹理设置 、 雾 对 于现 实生 活 中的复 杂 物体 , 想 将其 显示 在 要 化等效果 。 此外 O e G pn L还提供 了双缓存 , 可以用来 计算机屏幕上 , 可以首先利用某种技术手段提取真 制作动 画。 pn L的这些强大 的功能为实现三维 实物体表面的离散点 , O eG 然后将这些离散点输入到计 物体重建技术 、 以及建立人机交互的三维场景提供 算机中, 最后利用某种有效的算法将这些点联系起 了坚 实 的基 础 。 来构成三角网格的形式 , 最终在计算机屏幕上得到 图 — 便是真实物 O eG 不仅可以运行在各种流行 的操作系统 描述真实物体的三角网格模 型。 3 1 pn L

从OpenGL图形系统谈计算机图形学的应用领域

从OpenGL图形系统谈计算机图形学的应用领域
上述两个或多个领域, 但图形学 的发展还是基于上述 四个领
设计一直是工程和建筑 等领域的专业人员关注的 问题 。
工程师和建筑师从一 系列设计 要求 出发, 寻求一种符合设 计
要求的 既省钱又实用 的设 计方案。设计是个 迭代的过程, 专 业人 员先提 出最初 的解决方 案, 然后进行测 试, 根据测 试 再
计算 机图形技术进行控制, 生逼真的 图像 或者 虚构出现实 产
世界所 没有的图像 。
1 仿真与动画 . 3
21 . 彩色立方体旋转动画 实例
当计算机 图形系统 不断得 到发展, 能够实时地生 成复杂 图像 时, 工程师 与研 究人员开 始把它 应用在仿 真器上 , 训练
飞行员是其中的重要应用之 一。 图形化 的飞机仿 真器 已被证 实能够提高安全性 和降低培 训支 出 。 飞行仿 真器的研 制成功 促使人们 把计算机 图形学应 用到 电视 、电影和广 告行业, 这
0 引言
觉系统在数据处理与模式 识别方面 的作用是无与伦 比的。随 着 科学 技术的迅猛发展, 据量 的与 日俱增使得人们对数据 数 的分析 和处 理变得越 来越难, 们无法从数据海洋 中得到最 人 有 用的数据 , 找到数据的变化规律, 提取最本质的特 征。 但是 如果 能将这 些数据用 图形 的形式表示 出来, 情况就不一样 了, 事 物的发展 趋势和本质特征将会很清楚地呈 现在人们面 前。 现在 , 超级计算机可 以让许 多领域 中的研 究者 解决 以往看起

D C S i 1 o t e C m u e r p i S A p c t o b p n L G a h C y t m i U S 01 f h o p t r G a h C p I a i n y O e G r p i S S s e S i

计算机图形学 实验 利用OpenGL实现图形的平移、旋转、缩放

计算机图形学 实验 利用OpenGL实现图形的平移、旋转、缩放

XXXXXXXX大学(计算机图形学)实验报告实验名称利用OpenGL实现图形的平移、旋转、缩放实验时间年月日专业姓名学号预习操作座位号教师签名总评一、实验目的:1.了解OpenGL下简单图形的平移、旋转、缩放变换的编程的基本思想;2.掌握OpenGL下简单图形的平移、旋转、缩放变换的编程的基本步骤;二、实验原理:在OpenGL中,可以使用下面三个函数便捷地实现简单图形平移、旋转、缩放变换的功能:glRotatef(theta, vx, vy, vz);glTranslatef(dx, dy, dz);glScalef(sx,sy,sz);三、实验内容:// 1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "glut.h"#include "math.h"void display(){glClear( GL_COLOR_BUFFER_BIT); // Clear the frame bufferglColor3f( 0.0, 1.0, 1.0); // Set current color to greenglBegin( GL_POL YGON); // Draw the triangleglVertex2f( 0.0, -0.2);glVertex2f( 0.2, 0.0);glVertex2f( 0.0, 0.0);glEnd();glFlush();}void dsp()glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); // Clear the frame bufferglColor3f( 0.0, 1.0, 1.0); // Set current color to greendisplay();//-------------------------- //平移glPushMatrix();glTranslatef(0.5,0.5,0.0);display();glPopMatrix();//-------------------------- //缩放glPushMatrix();glScalef(0.5,0.5,0.0);display();glPopMatrix();//-------------------------- //旋转glPushMatrix();glRotatef(60,0.0,0.0,1.0);display();glPopMatrix();}void init(){glClearColor( 0.0, 0.0, 0.0, 0.0); // Set the clear color to black// Specify the boundaries of the viewing windowglMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(-1.0, 1.0, -1.0, 1.0); // The para are: (left, right, bottom, top)glMatrixMode(GL_MODELVIEW);}int main(int argc, char* argv[]){glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);glEnable(GL_DEPTH_TEST);glutCreateWindow("simple");glutDisplayFunc(dsp);init();glutMainLoop();return 0;原图:平移:缩放:旋转:四、实验总结:1.在分别查看图像的平移、缩放、旋转中的其中一个功能时,需要将其他两个的代码注释掉,否则只会显示旋转一个功能。

计算机图形学实验——利用OpenGL函数绘制五角星

计算机图形学实验——利用OpenGL函数绘制五角星

计算机图形学实验——利⽤OpenGL函数绘制五⾓星⼀、实验名称:五⾓星的绘制⼆、实验⽬的:了解 OpenGL 程序设计结构,掌握编程环三、境的设置,掌握绘制线段的⽅法。

四、实验内容:1.在 VC++ 环境下,练习利⽤ OpenGL 绘制三⾓形的程序。

2.编程实现绘制⼀个五⾓星。

(传统 OpenGL 或者 Shader)五、实验所需基本函数1.线段绘制glBegin(GL_LINES);//绘制参数GL_LINESglVertex2f(30,30);//起始点坐标glVertex2f(100,100);//终点坐标(两个为⼀组)glEnd();2.填充图像glBegin(GL_POLYGON);//绘制参数GL_POLYGONglVertex2f(x0, y0);//顶点坐标1glVertex2f(x1, y1);//2glVertex2f(cx, cy);//3glEnd();结果为对三个顶点组成的图像进⾏填充3.绘制颜⾊设置glColor3f(0.92, 0.89, 0.41);//⾦黄⾊六、实验原理根据⼩圆半径加⾓度算出第⼀个坐标然后⼤圆根据半径加⼀个⾓度算出第⼆个点坐标,然后旋转改变⾓度寻找所有顶点。

代码如下:1void DrawStar(float cx, float cy, float R,float r,float o)//五⾓星中⼼坐标x,y,⼤圆半径,⼩圆半径,初始⾓度2 {34float x0, y0, x1, y1;//5float o0 = o;//⼤圆对应⾓度6float o1 = o + 0.2 * 3.14;//⼩圆对应⾓度7for (int i = 0;i <10;i++)8 {9 x0 = cx+R * cos(o0);//⼤圆对应的x坐标10 y0 = cy+R * sin(o0);//⼤圆对应y坐标11 x1 = cx+r * cos(o1);//⼩圆对应x坐标12 y1 = cy+r * sin(o1);//⼩圆对应y坐标13if (i % 2 == 0)14 {15 glColor3f(1, 0, 0);16 }17else18 {19 glColor3f(0.92, 0.89, 0.41);20 }2122 glBegin(GL_POLYGON);//绘制23 glVertex2f(x0, y0);24 glVertex2f(x1, y1);25 glVertex2f(cx, cy);26 glEnd();27if (i % 2 == 0)28 {29 o0 = o0 + 0.4 * 3.14;//⼤圆对应⾓度变换30 }31else32 {33 o1 = o1 + 0.4 * 3.14;//⼩圆对应⾓度变换34 }3536 }37383940 }七、绘制结果⼋、附件所有代码1// OpenGLOld.cpp : 定义控制台应⽤程序的⼊⼝点。

计算机图形学OpenGL版实验1-4

计算机图形学OpenGL版实验1-4

实验1 OpenGL初识一、实验目的:熟悉编程环境;了解光栅图形显示器的特点;了解计算机绘图的特点;利用VC+OpenGL作为开发平台设计程序,以能够在屏幕上生成任意一个像素点为本实验的结束。

二、实验内容:(1)了解和使用VC的开发环境,理解简单的OpenGL程序结构。

(2)掌握OpenGL提供的基本图形函数,尤其是生成点的函数。

三、该程序的作用是在一个黑色的窗口中央画一个矩形、三角形和三个点,如图所示。

下面对各行语句进行说明:首先,需要包含头文件#include <GL/glut.h>,这是GLUT的头文件。

然后看main函数。

int main(int argc, char *argv[]),这个是带命令行参数的main函数。

这种以glut开头的函数都是GLUT工具包所提供的函数,下面对用到的几个函数进行介绍;1)glutInit,对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。

其格式比较固定,一般都是glutInit(&argc, argv)就行;2) glutInitDisplayMode,设置显示方式,其中GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX(表示使用索引颜色)。

GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)。

更多信息,以后的实验教程会有讲解介绍;3) glutInitWindowPosition,设置窗口在屏幕中的位置;4) glutInitWindowSize,设置窗口的大小;5) glutCreateWindow,根据前述设置的信息创建窗口。

参数将被作为窗口的标题。

注意:窗口被创建后,并不立即显示到屏幕上。

需要调用glutMainLoop才能看到窗口;6) glutDisplayFunc,设置一个函数,当需要进行画图时,这个函数就会被调用。

(暂且这样理解);7) glutMainLoop,进行一个消息循环。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
根据离视点的距离,计算对象的颜色值来建 立深度的视觉。其效果与现实生活一样,当 物体较远时背景较淡。
– 操作位图、字体和图像
Open GL
前一页 休息
22
Open GL 的基本特点
Open GL
Open GL提供了以下基本操作
– 纹理映射(texture mapping)
在计算机图形学中,把包含颜色、alpha值、 亮度等数据的矩形数组称为纹理。
– 着色
Open GL提供了两种物体着色模式
– RGBA颜色模式
– 颜色索引模式。
前一页 休息
20
Open GL 的基本特点
Open GL提供了以下基本操作 – 反走样(antialiasing)
Open GL提供了点、线、多边形的反走样技 术。 (通过改变点、线、多边形周围像素的 颜色,使其平滑化,达到消除锯齿效果)
Open GL
前一页 休息
9
Open GL 的发展历史
Open GL
Windows下常用的Open GL库有两种:MS实 现的和SGI实现的
– MS-Open GL调用会自动检测是否存在显示卡制 造商提供的ICD(Installable Client DeviceDriver) 驱动程序,有则调用ICD中的例程,否则使用 CPU进行计算,所以能利用显示卡的OpenGL加 速能力。对开发者来说使用方法并没有区别,只 是有ICD驱动时更快些。
纹理映射可以理解为将纹理粘贴在所绘制的 三维模型表面,以使三维图形显得更生动。
– 动画
出色的动画效果是Open GL的一大特色; Open GL提供了双缓存区技术来实现动画绘
制。
前一页 休息
23
Open GL
Open GL 的基本特点
Open GL并没有提供三维模型的高级命令, 它也是通过基本的几何图元--点、线及多边形 来建立三维模型的。
前一页 休息 规范全部测试的实现才能称为Open GL。
6
Open GL
Open GL 的发展历史
与微软的竞争
– Open GL被设计成独立于硬件,独立于窗口系统, 在运行各种操作系统的各种计算机上都可用,并 能在网络环境下以客户/服务器模式工作,是专业 图形处理、科学计算等高端应用领域的标准图形 库。
– 它低端应用上的主要竞争对手是MS-Direct3D, 该图形库是以COM接口形式提供的,所以极为复 杂,稳定性差;另外微软公司拥有该库版权,目 前只在Windows平台上可用。
前一页 休息
7
Open GL 的发展历史
与微软的竞争
– Direct3D的优势在速度上,但现在低价显卡都能 提供很好的Open GL硬件加速,所以做3D图形开 发使用Direct3D已没有特别的必要。
Open GL
前一页 休息
3
Open GL 的发展历史
Open GL
人们对三维图形技术的研究已经经历了一个很 长的历程,而且涌现了许多三维图形开发工具, 其中SGI公司推出的为其图形工作站开发的 IRIS GL三维图形库表现尤为突出,它易于使 用且功能强大。
但是移植性不好, SGI公司便在IRIS GL的基 础上开发了Open GL 。
Open GL API标准的任何硬件上。
前一页 休息
14
Open GL
Open GL 的基本特点
– 可扩展性
Open GL是低级的图形API,它具有充分的可 扩展性。如今,许多Open GL开发商在Open GL核心技术规范的基础上,增强了许多图形 绘制功能,从而使Open GL能紧跟最新硬件 发展和计算机图形绘制算法的发展。
Open GL 的工作流程
Open GL工作流程就是一个从定义几何要素 到把像素段写入帧缓冲区的过程。
Open GL
前一页 休息
30
Open GL 的工作流程
在屏幕上显示图像的主要步骤
– 构造几何要素(点、线、多边形、图像、位图), 创建对象的数学模型;
– 在三维空间中放置对象,选择合适的场景观察点; – 计算对象的颜色,颜色可能直接定义,或由光照条
– 容易使用
Open GL可以利用已有的其它格式的数据源进 行三维物体建模,大大提高了软件开发效率;
采用Open GL技术,开发人员几乎可以不用了 解硬件的相关细节,便可以利用Open GL开发
照片质量的图形应用程序。
前一页 休息
16
Open GL 的基本特点
– 灵活性
尽管Open GL有一套独特的图形处理标准, 但各平台开发商可以自由地开发适合于各自 系统的Open GL执行实例。
– 颜色融合(blending)
为了使三维图形更加具有真实感,经常需要 处理半透明或透明的物体图像,这就需要用 到融合技术。
Open GL
前一页 休息
21
Open GL 的基本特点
Open GL提供了以下基本操作 – 雾化(fog)
正如自然界中存在烟雾一样,Open GL提供 了“fog”的基本操作来达到对场景进行雾化 的效果。
现在Open GL被认为是高性能图形和交互式场 景处理的标准。
前一页 休息
4
Open GL 的发展历史
Open GL
– SGI(Silicon Graphics, Inc. )公司成立于1982 年,是一个生产高性能计算机系统的跨国公司, 总部设在美国加州旧金山硅谷。
– SGI公司在业界率先集成了RISC技术、均衡多重处 理技术、数字化媒体技术、计算机图形技术、 UMA及CCNUMA体系结构等计算机领域的核心科 技,形成了自己的独特风格,开创了视算科技及信 息处理的新方向。
目前,有许多优秀的三维图形软件(如 3DMAX)可以较方便地建立物体模型,但又 难以对建立的模型进行控制,若把这些模型转 化为Open GL程序,则可随心所欲地控制这 些模型来制作三维动画,实现仿真数据的可视 化和虚拟现实。
前一页 休息
24
Open GL 的体系结构
Win32平台上Open GL API的结构
– SGI公司是美国Fortune杂志所列美国最大500家公 司/生产企业之一,年产值超过40亿美元。

前一页 休息
5
Open GL 的发展历史
Open GL
1992年,SGI公司发布了Open GL 1.0版。
1995年,Open GL ARB 发布了1.1版 。
– Open GL可以运行在当前各种流行操作系统之上, 如Win系列、 Mac OS、Unix、 Linux等。
– 各种流行的编程语言都可以调用Open GL中的库函 数,如C、 Fortran、Pascal 、C++、 Java 。
– Open GL完全独立于各种网络协议和网络拓扑结构。
前一页 休息
来创建三维图形变得更有机会、更为方便 。
前一页 休息
12
Open GL 的基本特点
OpenGL应用领域十分宽广
– 军事 – 电视广播 – CAD/CAM/CAE – 娱乐 – 艺术造型 – 医疗影像 – 虚拟现实
Open GL
前一页 休息
13

Open GL 的基本特点
Open GL
Open GL具有以下特点
对于硬件特性的升级可以体现在Open GL扩 展机制以及Open GL API中,一个成功的 Open GL扩展会被融入在未来的Open GL版 本之中。
前一页 休息
15
Open GL 的基本特点
Open GL
– 可伸缩性
基于Open GL API的图形应用程序可以运行在 许多系统上,包括各种用户电子设备、PC、 工作站以及超级计算机。
件及纹理间接给出; – 光栅化—把对象的数学模型和颜色信息转换到屏幕
的像素。
Open GL
前一页 休息
31
Open GL 的工作流程
Open GL
OpenGL的绘制过程多种多样,内容非常丰富, 主要提供以下几种对三维物体的绘制方式
– 线框绘制方式(Wire frame):绘制三维物体的网 格轮廓线。
Windows应用程序
Open GL
GLU
GDU
WGL
Open GL
O物G二p前体eW的一L次n描页UGOG一G曲表述pDL休L套e面U是示息、表n编是、W实G变示程OLNi用换基np不接U3的e、本R2n提口为BA光的G供SP支L照A曲I窗,程持P、线I口主序O,纹曲管p要必主e理面理n功须要映等G、能使功L射输包用而能等入括的特包管绘w别括i理n制设3和2计平事台件的响用应户机接制口, 29
– SGI的版本是纯软件实现,不能利用硬件加速并且 SGI已经在1999年宣布停止支持,但这套图形库 便于调试程序,仍有不少开发者使用。
前一页 休息
10
Open GL
Open GL 的发展历史
硬件性能的提高和Open GL本身的不断发展, 使得Open GL不再只属于专用图形工作站。
如今,开发人员可以在各种硬件平台利用Open GL进行图形软件开发。
– 在专业图形处理特别是高端应用方面目前还没有 出现以Direct3D技术为基础的例子,而游戏等低 端应用也有转向Open GL的趋势。
Open GL
前一页 休息
8
Open GL 的发展历史
微软对Open GL的支持
– Windows NT始于3.51 – Windows9x始于Win95 OEM Service Release 2 – 更高版本都支持
11
Open GL 的发展历史
Open GL
Microsoft、SGI、ATT、IBM、SUN、HP等 几家在计算机市场占主导地位的大公司都采用 了Open GL图形标准。
相关文档
最新文档