计算机图形学 第二 OpenGL环境下图形系统的设计

合集下载

计算机图形学教案

计算机图形学教案

计算机图形学教案一、课程简介计算机图形学是一门涉及计算机图形、图像处理和计算机视觉等领域的重要课程。

本课程将介绍计算机图形学的基本概念、原理和应用,帮助学生掌握计算机图形学的基础知识,并提升他们在图形学领域的技能。

二、课程结构1. 计算机图形学基础- 介绍计算机图形学的历史发展和基本概念- 讨论计算机图形学的应用领域和未来发展趋势- 熟悉图像处理、图形学渲染和动画等基本技术2. 图形系统建模- 学习三维图形对象的建模和表示方法- 掌握光栅化和矢量化图形处理技术- 讨论图形系统的设计和实现3. 计算机视觉- 理解视觉系统的基本原理和功能- 学习计算机视觉的算法和应用- 探讨计算机视觉在人工智能领域的应用4. 图形学编程实践- 深入学习图形学编程语言和库- 完成实际项目,提升图形学编程能力- 探索图形学在多领域的应用案例三、教学目标1. 帮助学生全面了解计算机图形学的基本知识和技术2. 培养学生分析和解决计算机图形学问题的能力3. 提升学生在图形学领域的实际操作和应用能力4. 激发学生对计算机图形学研究的兴趣和热情四、教学方法1. 理论讲解:通过课堂讲解、案例分析等方式,向学生介绍计算机图形学的基本概念和原理2. 实践操作:组织学生参与实验、项目等实际操作,巩固理论知识并提升实践能力3. 课堂互动:鼓励学生提问、讨论,促进师生间的互动和交流4. 作业考核:布置不同形式的作业,检测学生对知识的掌握情况,促进学习效果的提升五、教材参考1. 《计算机图形学导论》2. 《OpenGL图形与游戏开发实践》3. 《计算机视觉:算法与应用》4. 《经典图形学算法实例详解》六、学习评价1. 课堂表现:出勤情况、课堂参与度等2. 作业考核:课后作业、实验报告等3. 期末考核:闭卷考试、项目实践等4. 综合评价:综合考虑以上因素,对学生进行综合评定七、总结计算机图形学作为一门新兴的学科,正逐渐成为信息技术领域的热门专业之一。

计算机图形学基础教程(第2版)

计算机图形学基础教程(第2版)

图书前言
本书是在2005版《计算机图形学基础教程》的基础上修订而成。 《计算机图形学基础教程》是根据作者在清华大学多年教学实践,并参考了国内外最新的相关教材和部分最 新的研究成果编写而成。第2版教材主要修订了以下内容: 1.增加了第1章的1.5节,介绍清华大学近年来的最新研究成果。 2.增加了第3章的3.9节,介绍格表示、简化与细分。 3.增加了第4章的4.1节,介绍图形绘制的基本概念和流程,提高本章整体上的可读性。 4.将第4章4.8节层次细节的内容移入第3章的3.9节,增加有关景物模拟的内容。 5.删除第5章VRML的内容,改写Open GL的内容,增加一些常见的功能,并给出更多的示例。 本教程第1版出版4年来,被国内一大批高等院校采用,相关的老师、同学及读者提出了许多宝贵的建议,在 此表示衷心感谢。徐昆、来煜坤参与了第2版教材的修订,在此也一并表示感谢。
序言
清华大学计算机系列教材已经出版发行了近30种,包括计算机专业的基础数学、专业技术基础和专业等课程 的教材,覆盖了计算机专业大学本科和研究生的主要教学内容。这是一批至今发行数量很大并赢得广大读者赞誉 的书籍,是近年来出版的大学计算机教材中影响比较大的一批精品。
本系列教材的作者都是我熟悉的教授与同事,他们长期在第一线担任相关课程的教学工作,是一批很受大学 生和研究生欢迎的任课教师。编写高质量的大学(研究生)计算机教材,不仅需要作者具备丰富的教学经验和科 研实践,还需要对相关领域科技发展前沿的正确把握和了解。正因为本系列教材的作者们具备了这些条件,才有 了这批高质量优秀教材的出版。可以说,教材是他们长期辛勤工作的结晶。本系列教材出版发行以来,从其发行 的数量、读者的反映、已经获得的许多国家级与省部级的奖励,以及在各个高等院校教学中所发挥的作用上,都 可以看出本系列教材所产生的社会影响与效益。

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

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

科技广场2010.60引言计算机图形学(Computer Graphics,简称CG)是利用计算机处理图形信息的一门学科,包括图形信息的表示、输入输出与显示、图形的几何变换、图形之间的运算以及人机交互绘图等方面的技术。

计算机图形学既是一门科学,它包括一些数学基础和理论,又是一门技术,包括一些技巧和方法。

计算机图形学的研究领域包括图形系统的硬件设备、基本图元的生成技术、图形变换技术、人机交互绘图技术、图形运算和处理技术、实体造型技术和真实图形的表示。

在过去的几十年里,计算机图形学无论是在理论研究,还是在实际应用的深度和广度方面,都取得了令人可喜的成果,其主要推动力来自于图形用户的要求以及软件和硬件技术的突破。

目前,计算机图形学的应用领域多样且范围广泛。

尽管如此,我们仍然可以大致把它划分为四个主要领域:信息的显示、设计、仿真与动画、用户界面。

计算机图形学的许多应用横跨上述两个或多个领域,但图形学的发展还是基于上述四个领域独立工作。

1计算机图形学的应用1.1信息显示传统的图形技术是作为人们之间传递信息的媒介而出现的。

虽然口语和书面语言都能实现类似的目的,但人类视觉系统在数据处理与模式识别方面的作用是无与伦比的。

随着科学技术的迅猛发展,数据量的与日俱增使得人们对数据的分析和处理变得越来越难,人们无法从数据海洋中得到最有用的数据,找到数据的变化规律,提取最本质的特征。

但是如果能将这些数据用图形的形式表示出来,情况就不一样了,事物的发展趋势和本质特征将会很清楚地呈现在人们面前。

现在,超级计算机可以让许多领域中的研究者解决以往看起来似乎不能解决的问题。

科学可视化领域为研究人员理解各自领域里产生的大量数据提供了图形工具。

诸如流体力学、分子生物学和数学、医学等领域产生的大量数据经图形学处理后得到的几何实体可以让研究人员深入了解其复杂过程。

1.2设计设计一直是工程和建筑等领域的专业人员关注的问题。

工程师和建筑师从一系列设计要求出发,寻求一种符合设计要求的既省钱又实用的设计方案。

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的基本概念和使用方法,并实现了一些基本的图形渲染效果。

计算机图形学基础(第二版)

计算机图形学基础(第二版)
CRT从结构上分为:电子枪、偏转系统、荧光 屏。
16
阴极射线管(CRT)
电子枪
偏转系统
图2.6 CRT的结构
荧光屏
17
阴极射线管(CRT)
电子枪:产生一个沿管轴(Z轴)方向前进的高 速的细电子束轰击荧光屏。 具有足够的电流强度。 电流的大小和有无必须是可控的。 具有很高的速度。 在荧光屏上应能聚焦很小的光亮,以保证显 示器有足够的分辨率。
13
图形输入设备
声频输入系统 视频输入系统
14
2.3 图形显示设备
阴极射线管 彩色阴极射线管 CRT图形显示器 平板显示器 三维观察设备
15
阴极射线管(CRT)
CRT(Cathode Ray Tube)是一种真空器件, 它利用电磁场产生高速的、经过聚焦的电子束, 偏转到屏幕的不同位置轰击屏幕表面的荧光材 料而产生可见图形。
图2.9 枕形失真与桶形失真
22
阴极射线管(CRT)


灯 丝
阴 极
控加 制速 栅极
聚 焦 极
加 速 极
平 偏 转
直 偏 转


图2.10 电偏转
ห้องสมุดไป่ตู้
荧 光 屏
23
阴极射线管(CRT)
荧光屏(Phosphor Screen) 荧光屏是用荧光粉涂敷在玻璃底壁上制成的, 常用沉积法涂敷荧光粉。玻璃底壁要求无气 泡,表面光学抛光。 荧光粉的性能要求是:发光颜色满足标准白 色、发光效率高、余辉时间合适以及寿命长 等。
输入一系列二维或三维的坐标值。这些坐标值 代表的坐标点,在系统中将以直线段或曲线段 连接,以逼近图形对象的描绘曲线或表面形状。
12
图形输入设备

图形学实验报告 OpenGL中的实体模型与层次模型

图形学实验报告 OpenGL中的实体模型与层次模型

《计算机图形学基础》实验3OpenGL中的实体模型与层次模型一、实验目的及要求1.掌握GLUT库中的多面体函数的绘制方法;2.掌握GLUT库中的二、三次曲面的绘制方法;3.掌握绘制实体或线框模型的绘制方法;4.掌握显示列表的用法;二、实验环境主要是软件开发环境:VC 6.0三、实验内容1.利用OpenGL绘制简单多面体、二次及三次曲线的例子。

2.利用OpenGL绘制奥运五环标志。

四、实验结果1、利用OpenGL绘制简单多面体、二次及三次曲线的例子。

2、利用OpenGL绘制奥运五环标志五、程序代码1、利用OpenGL绘制简单多面体、二次及三次曲线#include <gl/glut.h>static GLsizei iMode = 1;static GLfloat xRot = 0.0f; //x方向旋转参数static GLfloat yRot = 0.0f; //y方向旋转参数GLUquadricObj *obj; //二次曲面对象void Initial(void){glClearColor(1.0f, 1.0f, 1.0f, 1.0f);glColor3f(0.0f, 0.0f, 0.0f);obj = gluNewQuadric( );gluQuadricDrawStyle(obj, GLU_LINE); //以线框方式绘制二次曲面对象}void ChangeSize(int w, int h){glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D (-1.5f, 1.5f, -1.5f, 1.5f);}void Display(void){glClear(GL_COLOR_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glRotatef(xRot, 1.0f, 0.0f, 0.0f); //旋转图形glRotatef(yRot, 0.0f, 1.0f, 0.0f); //旋转图形//指定需要绘制的图元switch(iMode) {case 1:glutWireTetrahedron(); break;case 2:glutSolidTetrahedron(); break;case 3:glutWireOctahedron(); break;case 4:glutSolidOctahedron(); break;case 5:glutWireSphere(1.0f,15,15); break;case 6:glutSolidSphere(1.0f,15,15); break;case 7:glutWireTeapot(1.0f); break;case 8:glutSolidTeapot(1.0f); break;case 9:gluSphere(obj, 1.0f, 15, 15); break;case 10:gluCylinder(obj,1.0f,0.0f,1.0f,15,15);break;case 11:gluPartialDisk(obj,0.3f,0.8f,15,15,30.0f,260.0f); break;default: break;}glFlush();}void ProcessMenu(int value){iMode = value;glutPostRedisplay();}void SpecialKeys(int key, int x, int y){if(key == GLUT_KEY_UP) xRot-= 5.0f;if(key == GLUT_KEY_DOWN) xRot += 5.0f;if(key == GLUT_KEY_LEFT) yRot -= 5.0f;if(key == GLUT_KEY_RIGHT) yRot += 5.0f;if(xRot > 356.0f) xRot = 0.0f;if(xRot < -1.0f) xRot = 355.0f;if(yRot > 356.0f) yRot = 0.0f;if(yRot < -1.0f) yRot = 355.0f;glutPostRedisplay();}int main(int argc, char* argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(400,400);glutInitWindowPosition(100,100);glutCreateWindow("OpenGL模型绘制函数示例");//创建菜单并定义菜单回调函数int nGlutPolyMenu = glutCreateMenu(ProcessMenu);glutAddMenuEntry("线框正四面体",1); //创建GLUT多面体绘制菜单glutAddMenuEntry("实体正四面体",2);glutAddMenuEntry("线框正八面体",3);glutAddMenuEntry("实体正八面体",4);int nGlutCurveMenu = glutCreateMenu(ProcessMenu); //创建GLUT曲面绘制菜单glutAddMenuEntry("线框球面",5);glutAddMenuEntry("实体球面",6);glutAddMenuEntry("线框茶壶",7);glutAddMenuEntry("实体茶壶",8);int nGluCurveMenu = glutCreateMenu(ProcessMenu); //创建GLU曲面绘制菜单glutAddMenuEntry("线框球面",9);glutAddMenuEntry("线框圆锥面",10);glutAddMenuEntry("线框圆环面",11);int nMainMenu = glutCreateMenu(ProcessMenu); //创建主菜单glutAddSubMenu("GLUT多面体", nGlutPolyMenu);glutAddSubMenu("GLUT曲面", nGlutCurveMenu);glutAddSubMenu("GLU曲面", nGluCurveMenu);glutAttachMenu(GLUT_RIGHT_BUTTON);glutDisplayFunc(Display);glutReshapeFunc(ChangeSize);glutSpecialFunc(SpecialKeys);Initial();glutMainLoop();return 0;}2、利用OpenGL绘制奥运五环标志#include <gl/glut.h>GLuint OlympicRings;void Initial(void){glClearColor(1.0f, 1.0f, 1.0f, 1.0f);OlympicRings = glGenLists(1);glNewList(OlympicRings, GL_COMPILE);glColor3f(1.0, 1.0, 0.0);glTranslatef(-22.0, 0.0, 0.0);glutSolidTorus(0.5, 20.0, 15, 50); //绘制黄色环glColor3f(0.0, 1.0, 0.0);glTranslatef(44.0, 0.0, 0.0);glutSolidTorus(0.5, 20.0, 15, 50); //绘制绿色环glColor3f(0.0, 0.0, 0.0);glTranslatef(-22.0, 30.0, 0.0);glutSolidTorus(0.5, 20.0, 15, 50); //绘制黑色环glColor3f(0.0, 0.0, 1.0);glTranslatef(-42.0, 0.0, 0.0);glutSolidTorus(0.5, 20.0, 15, 50); //绘制蓝色环glColor3f(1.0, 0.0, 0.0);glTranslatef(84.0, 0.0, 0.0);glutSolidTorus(0.5, 20.0, 15, 50); //绘制红色环glEndList();}void ChangeSize(int w, int h){glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D (-70.0f, 70.0f, -70.0f, 70.0f);}void Display(void){glClear(GL_COLOR_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glCallList(OlympicRings); //调用显示列表glFlush();}int main(int argc, char* argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(400,400);glutInitWindowPosition(100,100);glutCreateWindow("OpenGL模型绘制函数示例");glutDisplayFunc(Display);glutReshapeFunc(ChangeSize);Initial();glutMainLoop();return 0;}六、心得体会多面体画出来,如果函数引用缺少一部分,那么会很小。

计算机图形学课程设计透视投影图三视图

计算机图形学课程设计透视投影图三视图

计算机图形学程序课程设计题目:分别在四个视区内显示空间四面体的三视图、透视投影图。

学院:信息科学与技术学院专业:计算机科学与技术姓名:oc学号:oc电话:oc邮箱:oc目录一、设计概述(1)设计题目。

2(2)设计要求。

2(3)设计原理。

2(4)算法设计。

5(5)程序运行结果。

9二、核心算法流程图。

10三、程序源代码。

12四、程序运行结果分析。

24五、设计总结分析。

25六、参考文献。

26一.设计概述•设计题目计算机图形学基础(第二版)陆枫何云峰编著电子工业出版社P228-7.16:利用OpenGL中的多视区,分别在四个视区内显示图7-41所示空间四面体的主视图、俯视图、侧视图、透视投影图。

•设计要求设计内容:1. 掌握主视图、俯视图、侧视图和透视投影变换矩阵;2. 掌握透视投影图、三视图生成原理;功能要求:分别在四个视区内显示P228-图7-41所示空间四面体的主视图、俯视图、侧视图、透视投影图。

•设计原理正投影正投影根据投影面与坐标轴的夹角可分为三视图和正轴测图。

当投影面与某一坐标轴垂直时,得到的投影为三视图,这时投影方向与这个坐标轴的方向一致,否则,得到的投影为正轴测图。

1.主视图(V面投影)将三维物体向XOZ平面作垂直投影,得到主视图。

由投影变换前后三维物体上点到主视图上的点的关系,其变换矩阵为:Tv=Txoz= [1 0 0 0][0 0 0 0][0 0 1 0][0 0 0 1]Tv为主视图的投影变换矩阵。

简称主视图投影变换矩阵。

2.侧视图(W面投影)将三维物体向YOZ平面作垂直投影,得到侧视图。

为使侧视图与主视图在一个平面内,就要使W面绕Z轴正向旋转90°。

同时为了保证侧视图与主视图有一段距离,还要使W面再沿X方向平移一段距离x0,这样即得到侧视图。

变换矩阵为:Tv=Tyoz= [ 0 0 0 0 ][-1 0 0 0 ][ 0 0 1 0 ][-x0 0 0 1]Tv为主视图的投影变换矩阵。

计算机图形学课程设计完本

计算机图形学课程设计完本

1中文摘要本次课程设计采用OpenGL来完成。

OpenGL是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。

OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。

本次课程设计是在win7系统下VC++6.0中的win32环境中,通过使用OpenGL所提供的标准库函数,综合图形学里的坐标转换,投影变换,光照以及纹理等知识,实现一个简单的太阳系的运行状况。

该系统仅做演示使用,将只包括太阳,地球与月亮,并且不保证相关数据的设定准确性。

目录一、课程设计任务及要求 (1)二、需求分析 (1)三、系统设计 (1)四、详细设计 (3)4.1 初始化的设定 (3)4.2 光源的位置与观察位置的设定 (4)4.3 纹理映射的设置 (5)4.4 各星球球体的绘制 (7)4.5 星球公转轨道 (9)4.6 人机交互式的实现 (10)五、运行调试与分析讨论 (12)5.1 程序运行截图 (12)5.2 结果分析 (13)六、设计体会与小结 (14)七、参考文献 (16)一、课程设计任务及要求1.利用OpenGL创建太阳,地球,月亮三个球体。

2. 实现“月亮绕着地球转,地球绕着太阳转”。

3. 为太阳,地球,月亮附上不同的纹理。

4. 具有较好的动画效果,消除闪烁现象。

5. 其他功能的添加。

二、需求分析本次课程设计使用的编译软件为Visual C++ 6.0。

设计中通过调用OpenGL函数库以来完成太阳,月亮,地球的球体绘制与纹理的加载,通过矩阵的变换以实现星球的运动效果。

从而模拟出太阳系的运行效果动画。

在之后,加入星球的轨道轨迹,使得模拟系统3D效果更加明显。

并加入人机交互操作。

通过“q,w,e,s,a,d”键来调整观察视角,可以实现全方位对此系统进行观察,使系统具有一定的可操作性。

三、系统设计本次课题为:实现太阳系运行动画。

系统设计步骤为:1.太阳,地球,月亮三个球体的创建。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010-12-26 计算机图形学 2
2 OpenGL应用程序的工作过程 应用程序的工作过程
作为图形硬件的软件接口, 作为图形硬件的软件接口,OpenGL最主要的 最主要的 工作就是将二维及三维物体描绘至帧缓存中。 工作就是将二维及三维物体描绘至帧缓存中。 这些物体由一系列的描述物体几何性质的顶 或描述图像的像素(Pixel)组成。 组成。 点(Vertex)或描述图像的像素 或描述图像的像素 组成 OpenGL执行一系列的操作后把这些数据最终 执行一系列的操作后把这些数据最终 转化成像素数据, 转化成像素数据,并在帧缓存中形成最后的 结果。下面对OpenGL的工作做概要性介绍。 的工作做概要性介绍。 结果。下面对 的工作做概要性介绍
2010-12-26
计算机图形学
15
OpenGL的函数约定 的函数约定
说明了OpenGL函数的各个部分。这个 函数的各个部分。 图9.2说明了 说明了 函数的各个部分 带有后缀3f的函数采用了三个浮点参数 的函数采用了三个浮点参数。 带有后缀 的函数采用了三个浮点参数。
图9.2
2010-12-26
2010-12-26
计算机图形学
17
需要把glut32.dll 需要把glut32.dll 拷贝到 c:\windows\ c:\windows\system32, 把 glut32.lib 拷贝 到 c:\msdev\lib, 把glut.h 拷贝到 c:\msdev\ c:\msdev\include\ c:\msdev\include\gl 。
2010-12-26
计算机图形学
4
3 OpenGL的简单例程 的简单例程
#include <GL/glut.h> int main(int argc, char** argv) {
glutInit(&argc, argv); //初始化 初始化GLUT 初始化 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); //设置显示模式位单缓 设置显示模式位单缓 存,RGB模式 存, 模式 glutInitWindowSize (800, 600); //设置窗口大小 设置窗口大小 glutInitWindowPosition(0,100); glutCreateWindow("Line DDA algorithm !"); //创建一个渲染窗口,并吧标题 创建一个渲染窗口,并吧标题 栏设置为相应字符串 Myinit(); //窗口初始化 窗口初始化 //调用显示函数 调用显示函数 glutDisplayFunc (Display);
OpenGL函数说明 OpenGL函数说明
计算机图形学 16
6 环境的设置
从下示网站下载glutdlls.zip( 从下示网站下载glutdlls.zip(红色方块中的 glutdlls.zip 117KB文件 文件) 117KB文件) /~nate/glut.html
前缀 数据类型 相应C语言类 相应 语言类 型 OpenGL类型 类型
f d Ub Us Ui
32位浮点数 位浮点数 64位浮点数 位浮点数 8位无符号整 位无符号整 数 16位无符号 位无符号 整数 32位无符号 位无符号 整数
float double unsigned char unsigned short unsigned long
glutMainLoop(); // 必须添加的函数,用来维持显示图像显示过程的交互,而 且必须作为最后调用的一个函数 return 0; }
2010-12-26 计算机图形学 9
void Myinit(void) { 设置RGBA RGBA模式 glClearColor (0, 0,0, 0.0); // 设置RGBA模式 glMatrixMode(GL_PROJECTION); glLoadIdentity();//把投影矩阵置为单位阵 glLoadIdentity();//把投影矩阵置为单位阵 (0.0,1024,0.0,768);//定义世界坐 gluOrtho2D (0.0,1024,0.0,768);//定义世界坐 标的裁剪窗口, 标的裁剪窗口,也就是通常说的视口 //也就是在这个范围内的物体都将正投影到X0Y平面 也就是在这个范围内的物体都将正投影到X0Y //也就是在这个范围内的物体都将正投影到X0Y平面 }
2010-12-26
计算机图形学
12
5、 OpenGL的基本语法规则 、 的基本语法规则
OpenGL的数据类型 的数据类型 列出了OpenGL数据类型在 位 数据类型在32位 表9-1列出了 - 列出了 数据类型在 Windows环境下相应的 数据类型以及字面值 环境下相应的C数据类型以及字面值 环境下相应的 所用的前缀。 所用的前缀。
GLfloat,GLclampf GLdouble,GLclampd GLubyte,GLboolean GLushort GLuint,GLenum,GLb itfield
2010-12-26
计算机图形学
14
OpenGL的函数约定 的函数约定
OpenGL函数都遵循一个命名约定,所有函数 函数都遵循一个命名约定, 函数都遵循一个命名约定 都有一个根段,代表该函数相应的OpenGL OpenGL命 都有一个根段,代表该函数相应的OpenGL命 如图9.2所示,glColor3f函数的根段是 9.2所示 令。如图9.2所示,glColor3f函数的根段是 Color,gl前缀代表gl库 前缀代表gl Color,gl前缀代表gl库,3f后缀表示该函数 使用3个浮点参数。所有的OpenGL OpenGL函数都采用 使用3个浮点参数。所有的OpenGL函数都采用 以下格式: 以下格式: <库前缀 根命令 可选的参数个数 可选 库前缀><根命令 可选的参数个数><可 库前缀 根命令><可选的参数个数 的参数类型> 的参数类型
前缀 数据类型 相应C语言 相应 语言 类型 signed char OpenGL类型 类型 GLbyte GLshort GLint,GLsizei
b
8位整数 位整数 16位整数 位整数
32位整数 位整数
s
i
2010-12-26
short long
计算机图形学
13
OpenGL的数据类型 的数据类型
4 OpenGL程序的基本结构 程序的基本结构 程序
1、初始化部分 、 2、设置观察坐标系下的取景模式和取景框位 、 置及大小。 置及大小。 3、OpenGL的主要部分 、 的主要部分 使用OpenGL OpenGL的库函数构造几何物体对象 使用OpenGL的库函数构造几何物体对象 的数学描述,包括点划线的位置和拓扑关系, 的数学描述,包括点划线的位置和拓扑关系, 几何变换,光照处理等等。 几何变换,光照处理等等。
void Display(void) { 清除颜色缓冲区。 glClear(GL_COLOR_BUFFER_BIT); //1@ 清除颜色缓冲区。 glBegin (GL_LINES); glColor3f(1,1, 1.0); glVertex2f(0, 0); glVertex2f(600, 400); glEnd(); glFlush();//所有未被执行的命令被执行单缓冲区需要强制 glFlush();//所有未被执行的命令被执行单缓冲区需要强制 执行一次glFlush(),进行一次刷新操作。 glFlush(),进行一次刷新操作 执行一次glFlush(),进行一次刷新操作。 }
2010-12-26
计算机图形学
3
在屏幕上显示图像的步骤是以下3步 在屏幕上显示图像的步骤是以下 步: 1、构造几何要素(点、线、多边形、位图), 多边形、位图), 、构造几何要素( 创建对象的数学描述;在三维空间上放置对 创建对象的数学描述; 象,选择合适的场景观察点。 选择合适的场景观察点。 2、计算对象的颜色,这些颜色可能直接定义 、计算对象的颜色, 或由光照条件及纹理间接给出。 或由光照条件及纹理间接给出。 3、光栅化,把对象的数学描述和颜色信息转 、光栅化, 换到屏幕的像素。 换到屏幕的像素。
OpenGL简介 OpenGL简介
2010-12-26
计算机图形学
1
1 概 述
OpenGL是一个功能强大的图形库, OpenGL是一个功能强大的图形库,用户可以方便地利 是一个功能强大的图形库 用它开发出有多种特殊视觉效果(如光照、纹理、 用它开发出有多种特殊视觉效果(如光照、纹理、透 阴影)的二维、三维图形。 明、阴影)的二维、三维图形。 其前身是SGI SGI公司为其图形工作站设计的一个图形 其前身是SGI公司为其图形工作站设计的一个图形 开发软件库IRIS GL( library图形库 图形库), 开发软件库IRIS GL(graphics library图形库), 由于其性能优越,受到了用户的一致推崇。 由于其性能优越,受到了用户的一致推崇。 OpenGL经过对 的进一步发展,实现二维和三维 经过对GL的进一步发展 经过对 的进一步发展, 的高级图形技术,在性能上表现得异常优越。它的功 的高级图形技术,在性能上表现得异常优越。 能包括建模、变换、光线处理、色彩处理、 能包括建模、变换、光线处理、色彩处理、动画以及 更先进的能力,如纹理影射、物体运动模糊等。 更先进的能力,如纹理影射、物体运动模糊等。 OpenGL的这些能力为实现逼真的三维渲染效果、建 的这些能力为实现逼真的三维渲染效果、 的这些能力为实现逼真的三维渲染效果 立交互的三维景观等提供了条件。 立交互的三维景观等提供了条件。
相关文档
最新文档