计算机图形学(OpenGL总结)

合集下载

计算机图形学复习总结

计算机图形学复习总结

一、名词解释:1、计算机图形学:用计算机建立、存储、处理某个对象的模型,并根据模型产生该对象图形输出的有关理论、方法与技术,称为计算机图形学。

3、图形消隐:计算机为了反映真实的图形,把隐藏的部分从图中消除。

4、几何变换:几何变换的基本方法是把变换矩阵作为一个算子,作用到图形一系列顶点的位置矢量,从而得到这些顶点在几何变换后的新的顶点序列,连接新的顶点序列即可得到变换后的图形。

6、裁剪:识别图形在指定区域内和区域外的部分的过程称为裁剪算法,简称裁剪。

7、透视投影:空间任意一点的透视投影是投影中心与空间点构成的投影线与投影平面的交点。

8、投影变换:把三维物体变为二维图形表示的变换称为投影变换。

9、走样:在光栅显示器上绘制非水平且非垂直的直线或多边形边界时,或多或少会呈现锯齿状。

这是由于直线或多边形边界在光栅显示器的对应图形都是由一系列相同亮度的离散像素构成的。

这种用离散量表示连续量引起的失真,称为走样(aliasing )。

10、反走样:用于减少和消除用离散量表示连续量引起的失真效果的技术,称为反走样。

二、问答题:1、简述光栅扫描式图形显示器的基本原理。

光栅扫描式图形显示器(简称光栅显示器)是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的亮度,它不能直接从单元阵列中的—个可编地址的象素画一条直线到另一个可编地址的象素,只可能用尽可能靠近这条直线路径的象素点集来近似地表示这条直线。

光栅扫描式图形显示器中采用了帧缓存,帧缓存中的信息经过数字/模拟转换,能在光栅显示器上产生图形。

2、分别写出平移、旋转以及缩放的变换矩阵。

平移变换矩阵:⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡1010000100001z y xT T T (2分) 旋转变换矩阵: 绕X 轴⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-10000cos sin 00sin cos 00001θθθθ(2分) 绕Y 轴⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-10000cos 0sin 00100sin 0cos θθθθ(2分)绕Z 轴⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-1000010000cos sin 00sin cos θθθθ(2分) 缩放变换矩阵:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1000000000000zy x S S S (2分) 3、图形变换有什么特点?最基本的几何变换有哪些?答:图形变换的特点:大多数几何变换(如平移、旋转和变比)是保持拓扑不变的,不改变图形的连接关系和平行关系。

opengl实验报告

opengl实验报告

opengl实验报告OpenGL实验报告引言:OpenGL(Open Graphics Library)是一种跨平台的图形编程接口,被广泛应用于计算机图形学、游戏开发和科学可视化等领域。

本实验报告将介绍我对OpenGL的实验研究和学习成果。

一、实验目的本次实验的主要目的是掌握OpenGL的基本概念和使用方法,了解图形渲染的原理和过程,以及学习如何在OpenGL中创建和操作图形对象。

二、实验环境本次实验使用的是OpenGL的最新版本,并在Windows操作系统下进行开发。

使用的开发工具是Visual Studio和OpenGL的开发库。

三、实验过程1. 熟悉OpenGL的基本概念在开始实验之前,我先学习了OpenGL的基本概念,包括OpenGL的坐标系统、图形渲染管线、着色器等。

了解这些概念对于后续的实验非常重要。

2. 创建窗口和上下文在OpenGL中,我们需要先创建一个窗口和一个OpenGL上下文,以便进行图形渲染。

通过调用相关的OpenGL函数,我成功创建了一个窗口,并初始化了OpenGL的上下文。

3. 绘制基本图形接下来,我开始尝试绘制一些基本的图形,比如点、线和三角形。

通过设置顶点坐标和颜色,我成功绘制出了这些基本图形,并在窗口中显示出来。

4. 添加纹理为了使图形更加逼真和丰富,我学习了如何在OpenGL中添加纹理。

通过加载图片并设置纹理坐标,我成功将纹理贴在了绘制的图形上,使其具有了更加真实的效果。

5. 光照和阴影效果为了增加图形的立体感和真实感,我学习了如何在OpenGL中添加光照和阴影效果。

通过设置光源的位置和属性,以及材质的属性,我成功实现了光照和阴影的效果,使图形看起来更加逼真。

6. 动画效果为了使图形具有动态效果,我学习了如何在OpenGL中实现简单的动画效果。

通过每帧更新顶点的位置和纹理坐标,我成功实现了图形的旋转和平移动画,使其具有了动态的效果。

四、实验结果和分析通过以上的实验过程,我成功掌握了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中基本图形的绘制

《计算机图形学基础》实验4 OpenGL中基本图形的绘制一、实验目的及要求1.掌握OpenGL中点的绘制方法。

2.掌握OpenGL中直线的绘制方法。

3.掌握OpenGL中多边形面的绘制方法。

4. 掌握OpenGL中字符函数的绘制方法。

二、实验环境主要是软件开发环境vc 6.0三、实验内容OpenGL实现直线段的反走样。

四、实验结果五、程序代码#include <gl/glut.h>GLuint lineList; //指定显示列表IDvoid Initial(){glClearColor(1.0f, 1.0f, 1.0f, 0.0f);glLineWidth(12.0f);glColor4f (0.0, 0.6, 1.0, 1.0);lineList = glGenLists(1);glNewList(lineList, GL_COMPILE); //定义显示列表glBegin(GL_LINE_LOOP);glVertex2f(1.0f, 1.0f);glVertex2f(4.0f, 2.0f);glVertex2f(2.0f, 5.0f);glEnd();glEndList();}void ChangeSize(GLsizei w, GLsizei h){if(h == 0) h = 1;glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if(w<=h)gluOrtho2D(0.0, 5.0, 0.0, 6.0*(GLfloat)h/(GLfloat)w);elsegluOrtho2D(0.0, 5.0*(GLfloat)w/(GLfloat)h, 0.0, 6.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}void Displayt(void){glClear(GL_COLOR_BUFFER_BIT);glCallList(lineList);glFlush();}void Displayw(void){glClear(GL_COLOR_BUFFER_BIT);glEnable(GL_LINE_SMOOTH); //使用反走样glEnable (GL_BLEND); //启用混合函数glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //指定混合函数glCallList(lineList);glFlush();}void main(void){glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(300, 300);glutCreateWindow("原始图形");glutDisplayFunc(Displayt);glutReshapeFunc(ChangeSize);Initial();glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(300, 300);glutInitWindowSize(300, 300);glutCreateWindow("反走样图形");glutDisplayFunc(Displayw);glutReshapeFunc(ChangeSize);Initial();glutMainLoop();}六、心得体会在光栅图形显示器上绘制非水平且非垂直的直线或多边形边界时,或多或少会呈现锯齿状或台阶状外观。

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告计算机图形学实验报告引言计算机图形学是研究计算机生成和处理图像的学科,它在现代科技和娱乐产业中扮演着重要的角色。

本实验报告旨在总结和分享我在计算机图形学实验中的经验和收获。

一、实验背景计算机图形学实验是计算机科学与技术专业的一门重要课程,通过实践操作和编程,学生可以深入了解图形学的基本原理和算法。

本次实验主要涉及三维图形的建模、渲染和动画。

二、实验内容1. 三维图形建模在实验中,我们学习了三维图形的表示和建模方法。

通过使用OpenGL或其他图形库,我们可以创建基本的几何体,如立方体、球体和圆柱体,并进行变换操作,如平移、旋转和缩放。

这些基本操作为后续的图形处理和渲染打下了基础。

2. 光照和着色光照和着色是图形学中重要的概念。

我们学习了不同的光照模型,如环境光、漫反射和镜面反射,并了解了如何在三维场景中模拟光照效果。

通过设置材质属性和光源参数,我们可以实现逼真的光照效果,使物体看起来更加真实。

3. 纹理映射纹理映射是一种将二维图像映射到三维物体表面的技术。

通过将纹理图像与物体的顶点坐标相对应,我们可以实现更加细致的渲染效果。

在实验中,我们学习了纹理坐标的计算和纹理映射的应用,使物体表面呈现出具有纹理和细节的效果。

4. 动画和交互动画和交互是计算机图形学的重要应用领域。

在实验中,我们学习了基本的动画原理和算法,如关键帧动画和插值技术。

通过设置动画参数和交互控制,我们可以实现物体的平滑移动和变形效果,提升用户体验。

三、实验过程在实验过程中,我们首先熟悉了图形库的使用和基本的编程技巧。

然后,我们按照实验指导书的要求,逐步完成了三维图形建模、光照和着色、纹理映射以及动画和交互等任务。

在实验过程中,我们遇到了许多挑战和问题,但通过不断的尝试和调试,最终成功实现了预期的效果。

四、实验结果通过实验,我们成功实现了三维图形的建模、渲染和动画效果。

我们可以通过键盘和鼠标控制物体的移动和变形,同时观察到真实的光照效果和纹理映射效果。

计算机图形学基础 opengl版 第2版pdf

计算机图形学基础 opengl版 第2版pdf

计算机图形学基础 OpenGL版第2版PDF1. 简介《计算机图形学基础 OpenGL版》是一本介绍计算机图形学基本概念和OpenGL编程的经典教材。

本文档主要介绍第2版PDF版本的特点和内容。

本文档采用Markdown文本格式,方便阅读和编辑。

2. 第2版PDF版本特点2.1 更新内容与第1版相比,第2版PDF版本进行了一些更新和改进。

主要更新内容包括:•补充了最新的OpenGL版本特性和扩展。

•增加了更多的示例代码和案例分析,帮助读者更好地理解和应用OpenGL编程。

•修正了第1版中的一些错误和不准确的描述。

•优化了排版和图表插入方式,提升了阅读体验。

2.2 格式选择第2版PDF版本提供了多种格式的下载,以满足读者不同的需求。

可以根据自己的设备和喜好选择合适的格式,包括:•PDF格式:方便在电脑、手机或平板上阅读和打印。

•EPUB格式:适用于电子书阅读器和手机阅读器,支持调整字体、排版等功能。

•HTML格式:可在浏览器中打开,方便在线阅读和搜索。

3. 第2版PDF版本内容概述3.1 理论知识第2版PDF版本对计算机图形学的基本理论进行了全面的介绍。

主要包括以下内容:•图形学基础知识:几何图形、坐标系、变换等基本概念。

•光栅化和插值:介绍了光栅化算法和插值方法,以及它们在绘制图形中的应用。

•颜色和纹理:介绍了颜色模型、纹理映射等相关知识。

•阴影和着色:讨论了光照模型、阴影算法和着色方法等。

•可视化技术:介绍了数据可视化的基本原理和技术。

3.2 OpenGL编程第2版PDF版本详细介绍了使用OpenGL进行图形编程的基本知识和技巧。

具体内容包括:•OpenGL基础:介绍了OpenGL的基本概念、渲染管线和状态管理等。

•OpenGL图元:讲解了OpenGL支持的各种图元类型,并演示了它们的绘制方法和效果。

•OpenGL变换:介绍了OpenGL中的变换操作,包括平移、旋转、缩放等。

•OpenGL光照:讨论了OpenGL中的光照模型、光源设置和材质属性等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

<库前缀><根命令><可选的参数个数><可选的参数类型>
例如函数glColor3f(…),gl表示这个函数来自库 gl.h,color表示该函数用于颜色设定,3f表示这个 函数采用了三个浮点数参数。
11
6、OpenGL中的颜色
在OpenGL中,一种颜色用红、绿、蓝成分的混合来 表示,每种成分的值范围是0.0到1.0 。
– Heidi主要应用于CAD和CAM技术中,如 AutoCAD、3D Studio以及3DS MAX。
– Heidi是专业性强的软件包,在CAD和CAM 领域应用比较广泛,在其它领域如多媒体或 游戏软件中应用较少。
5
一、图形软件包
• 3、OpenGL
– OpenGL是以SGI公司为首,联合IBM、Intel 等8家公司共同制定的3D图形标准。
第一步,选择一个编译环境,如VC++ 第二步,安装GLUT工具包 第三步,建立一个OpenGL工程 第四步,编译连接 第五步,执行程序
OpenGL初步编程
OpenGL库和头文件:
动态库:opengl32.dll glu32.dll glut32.dll 放入 windows\system32目录下
• #include <GL/glut.h> // glut.h includes gl.h and glu.h
• void display() { • ... •}
• void init() { • ... •}
void display() {
glClear( GL_COLOR_BUFFER_BIT); // Clear the frame buffer
glColor3f( 0.0, 1.0, 0.0); // Set current color to green
glBegin( GL_POLYGON); the triangle
glVertex2f( -0.7, -0.7); glVertex2f( 0.7, -0.7); glVertex2f( 0, 0.7);
– void glTranslate{f,d}(TYPE x, TYPE y, TYPE z);
• 函数功能:对局部坐标系进行平移。 • 输入参数:在坐标轴方向的平移量x,y和z。 • 输出参数:无 • 返回值:无
– void glScale{f,d}(TYPE x, TYPE y, TYPE z);
Main.c
• #include <GL/glut.h> • main(int argc 这自动包含了gl.h • int argc, char** argv) •{ • glutInit(&argc,argv); • glutInitDisplayMode(GLUT_SINGLE|GLU
T_RGB); • glutInitWindowSize(500,500); • glutInitWindowPosition(0,0);
• 函数功能:定义附加裁剪平面。 • 输入参数: 参数plane表示裁剪平面索引号
GL_CLIP_PLANEi (i取0到到 GL_MAX_CLIP_PLANES-1 之间的整数), 参数 equation表示三维平面方程Ax+By+Cz+D=0的系 数A,B,C和D构成的数组。 • 输出参数:无 • 返回值:无
– 辅助库
• 提供窗口管理函数、事件处理函数和简单模型制作函数。 这些函数以“aux”为前缀。
7
二、用VC++编写OpenGL程序
• 2、帧缓存
– 在OpenGL中,帧缓存由颜色缓存、深度缓 存、模板缓存和累积缓存组成。
• 颜色缓存:用于存储每个像素点的颜色,包括左 前、(左后、右前、右后)和辅助颜色缓存。
静态库:opengl32.lib glu32.lib glut32.lib放入VC安 装目录的LIB目录下
头文件:gl.h glu.h glut.h放入VC安装目录的 Include\GL文件夹下
程序结构
•绝大多数OpenGL程序具有类似的结构, 包含下 述函数 ➢main(): ➢定义回调函数 ➢打开一个或多个具有指定属性的窗口 ➢进入事件循环(最后一条可执行语句) ➢init(): 设置状态变量 ➢视图
– void glEnd(void);
• 函数功能:定义图元,图元顶点序列结束。 • 输入:无 • 输出:无 • 返回值:无
32
四、图元绘制
• 2、画点
– void glPointSize(GLfloat size);
• 深度缓存:用于存储每个像素点的深度值。 • 模板缓存:用于将作图限制在屏幕中的某些部分。 • 累积缓存:在RGBA模式中,用于将一系列图像
累加成一幅图像。
• 3、建立OpenGL控制台应用程序(.NET)
8
• (4)OpenGL实用程序工具包(OpenGL utility toolkit,GLUT):glut
数据类型 黑 红 绿 黄 紫 青 深灰
红色成分 0.0 1.0 0.0 1.0 1.0 0.0 0.25
绿色成分 0.0 0.0 1.0 1.0 0.0 1.0 0.25
蓝色成分 0.0 0.0 0.0 0.0 1.0 1.0 0.25
12
OpenGL初步编程
在Windows下开发和创建一个OpenGL程 序的基本步骤:
– void glOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
21
三、图形变换
– 正射投影
top far
left right
view direction bottom
near
22
三、图形变换
– 正射投影矩阵
三、图形变换
• 1、投影
– void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
• 函功能:用一个正射投影矩阵右乘当前投影矩 阵。
• 输入参数:裁剪面left,right,bottom,top,zNear,zFar。 • 输出参数:无 • 返回值:无
• Windows专用函数
• API
9
4、OpenGL中的数据类型
数据类型
GLbyte GLshort GLint,GLsizei GLfloat,GLclampf GLdouble,GLclampd GLubyte,GLboolean GLshort GLuint,GLenum, GLbitfield
内部表示法 8位整数 16位整数 32位整数 32位浮点数 64位浮点数 8位无符号整数 16位无符号整数 32位无符号整数
定义为C类型 signed char short long float double unsigned char unsigned short unsigned long
10
5、函数命名约定 OpenGL函数都遵循一个命名约定,即采用以下格式
计算机图形学OpenGL总结
主讲人:桂进斌
1
• 参考书
– 1、OpenGL编程指南(第八版),Dave Shreiner 等(李军等译),机械工业出版社,2014年。
– 2、计算机图形学(第四版),Donald Hearn,电 子工业出版社,2014年。
2
学习内容
• 1、图形软件包 • 2、用VC++编写OpenGL程序 • 3、图形变换 • 4、图元绘制 • 5、颜色和光照 • 6、混合、反走样和雾化 • 7、显示列表、位图和图像 • 8、纹理映射 • 9、复杂图形绘制
29
三、图形变换
• 4、几何变换
– void glRotate{f,d}(TYPE angle, TYPE x, TYPE y, TYPE z);
• 函数功能:对局部坐标系进行旋转。 • 输入参数:旋转角度angle,旋转轴方向矢量(x,y,z)。 • 输出参数:无 • 返回值:无
30
三、图形变换
– OpenGL与硬件无关、独立于操作系统、支 持网络运行。
6
二、用VC++编写OpenGL程序
• 1、OpenGL函数库
– 基本库
• 基本库是OpenGL的核心函数库。所有OpenGL操作都可用 这些函数来实现。可以在平台之间移植。这些函数以“gl” 为前缀。
– 实用库
• 实用库建立在基本库的基础之上,目的是为了减轻使用者 的编程负担。这些函数以“glu”为前缀。
• 函数功能:对局部坐标系进行缩放。 • 输入参数:在坐标轴方向的缩放量x,y和z。 • 输出参数:无 • 返回值:无
31
四、图元绘制
• 1、图元定义
– void glBegin(GLenun mode);
• 函数功能:定义图元,图元顶点序列开始。 • 输入:图元类型 • 输出:无 • 返回值:无
• 函数功能:在窗口中定义一个视区。 • 输入参数:视区左下角坐标(x,y),视区的宽width,
视区的高height。 • 输出参数:无 • 返回值:无
28
三、图形变换
• 3、裁剪变换
– void glClipPlane(GLenum plane,const GLdouble *equation);
23
三、图形变换
– void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
• 函数功能:设置一个透视投影矩阵。 • 输入参数:视域的角度fovy,视域宽与高的比率,
相关文档
最新文档