OpenGL室内三维环境(北邮计算机图形学作业)

合集下载

基于OpenGL的三维图形绘制实验

基于OpenGL的三维图形绘制实验

基于OpenGL的三维图形绘制实验基于OpenGL的三维图形绘制实验⽬录实验题⽬:交互图形程序设计基础实验 (3)1.实验⽬的 (3)2.实验内容 (3)2.1 实验内容 (3)2.2 实验任务 (3)3.实验过程 (4)3.1 预处理 (4)3.3 主要函数说明 (5)3.4 过程描述 (6)3.5 运⾏截图 (7)4.实验结果 (7)5.实验体会 (7)实验题⽬:交互图形程序设计基础实验1.实验⽬的1)理解并掌握三维基本图形数据结构表⽰⽅法。

2)掌握编写OpenGL图形程序的基本⽅法.3)掌握OpenGL基本图形表⽰及绘制。

2.实验内容2.1 实验内容基于OpenGL的三维图形绘制实验⽬的是掌握图形信息的表⽰、数据的组织,在此基础上基于OpenGL绘制出三维图形。

实验内容包括OpenGL编程环境搭建、OpenGL程序结构、基本数据类型、核⼼函数等的使⽤;基本图形的绘制(点、线段、折线、闭合折线、多边形、三⾓形、三⾓扇、三⾓条带、四边形、四边形条带等)及图形属性控制(线宽、颜⾊、线型、填充样式等);对指定的若⼲三维模型进⾏建模、绘制,在⼀个程序框架下实现,提交1次程序,1份实验报告。

2.2 实验任务1、使⽤Visual C++建⽴⼀个单⽂档(SDI)程序,完成OpenGL绘制框架程序的设计。

在此基础上参照提供的资料,定义绘制函数,基于⾃定义的若⼲点坐标与颜⾊,分别绘制绘制点、线段、不闭合折线、闭合折线、多边形、三⾓形、四边形、三⾓扇、三⾓条带、四边形条带。

2、使⽤1中建⽴的程序框架,完成如下任务:(1)绘制正棱柱(底⾯多变形的边数及⾼度可以通过对话框输⼊)(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)

2、 要得到如右图示的效果,glBegin()函数的类型参数可取为(
3、要实现屏幕区域的多视口显示,应采用(
A.glOrtho() C.glViewport()
B.gluPerspective() C. OpenGL 有 两 条 平 行 的 流 水 线 , 一 条 是 ,另一条
福州大学
一、选择题
1、 通过( 真实感。 A.模板 A.GL_POLYGON D.GL_LINE_LOOP
《计算机图形学》课程
样卷
)技术,我们可以将 2D 图像数据映射到 3D 图元上,以增强场景的 B.纹理映射 B.GL_LINES C. 光照 D.混合 ) C.GL_LINE_STRIP )函数。
是 。 3、解决纹理映射问题的两步映射法中的第一步是把纹理映射到一个简单的三维中 间表面上,如__________、_________或立方体表面等。
三、判断题
1、齐次坐标(1,2,3,0)表示三维空间的矢量(1,2,3) ( 。
)
2、显示器采用 RGB 颜色模型,它是加性颜色模型。 ( 中就不用排序了。 ( )
L 2 的一侧。
第 2 页 共 2 页
五、程序设计题
右图示的某程序菜单用鼠标右键控制。要求 写出用 glut 库函数实现该菜单功能的 OpenGL 程 序。
六、推导题
设有两直线段 L1 与 L 2 ,其中 L1 的两端点为 p1 (x1 , y1 )、p 2 (x 2 , y 2 ) , L 2 的两 端点为 q1 (x 3 , y3 )、q 2 (x 4 , y 4 ) 。要求设计一算法,该算法可以测试 L1 是否完全在

3、消隐算法中,场景里的多边形在 Z-Buffer 算法中是要求排序的,而在画家方法

基于OpenGL的三维动画效果设计与实现

基于OpenGL的三维动画效果设计与实现

基于OpenGL的三维动画效果设计与实现OpenGL是一种跨平台的图形库,广泛应用于计算机图形学、游戏开发和虚拟现实等领域。

在OpenGL的基础上,可以实现各种精美的三维动画效果,如逼真的光影效果、自然的物理模拟和华丽的特效等。

本文将介绍如何基于OpenGL实现三维动画效果。

一、OpenGL简介OpenGL(Open Graphics Library)是一种跨平台的图形库,可以用于开发高性能的3D图形应用程序。

它提供了一套标准的API,程序员可以使用OpenGL库里的函数来绘制各种图形,包括点、线、三角形等。

OpenGL的主要优点是跨平台,程序可以在不同的操作系统和硬件上运行,并且不需要对程序做太多的修改。

二、OpenGL开发环境在开始OpenGL开发之前,需要配置正确的开发环境。

OpenGL的开发环境包括编程语言、OpenGL库、窗口系统和OpenGL的开发工具等。

编程语言:OpenGL支持多种编程语言,如C/C++、Java、Python等。

其中,C/C++是最常用的开发语言,因为它可以直接调用OpenGL的函数库。

OpenGL库:OpenGL库是开发OpenGL程序时必须的工具,它包含了OpenGL 的所有函数和常量。

窗口系统:OpenGL需要一个可视化的窗口系统,用来显示图形界面。

常用的窗口系统有Windows、Linux和MacOS等。

开发工具:开发OpenGL程序需要使用各种IDE和编辑器,如Visual Studio、CodeBlocks和Eclipse等。

三、实现三维动画效果的基础知识1.三维坐标系OpenGL使用右手坐标系表示三维坐标系,其中x轴向右,y轴向上,z轴向外。

2.矩阵变换OpenGL可以通过矩阵变换来实现图形的移动、旋转、缩放等操作。

常用的变换矩阵包括平移矩阵、旋转矩阵和缩放矩阵。

3.光照模型光照模型是OpenGL中重要的概念之一,它用来计算光源对物体的影响。

其中,主要包括光源的位置、光线的颜色和强度等因素。

图形学实验报告 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;}六、心得体会多面体画出来,如果函数引用缺少一部分,那么会很小。

计算机图形学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,进行一个消息循环。

关于opengl实验报告

关于opengl实验报告

关于opengl实验报告OpenGL实验报告一、实验目的本实验旨在通过使用OpenGL图形库,掌握基本的3D图形编程技术,以及了解OpenGL的基本操作和常用函数。

二、实验环境1. 操作系统:Windows 102. 开发环境:Visual Studio 20193. 编程语言:C++4. 图形库:OpenGL三、实验内容1. 创建一个窗口并初始化OpenGL环境2. 绘制一个简单的三维立方体3. 添加光照效果和材质4. 实现简单的相机控制5. 添加纹理贴图四、实验过程1. 创建窗口并初始化OpenGL环境首先,我们使用OpenGL提供的函数来创建一个窗口,并初始化OpenGL环境。

这一步是整个实验的基础,也是我们能够进行后续操作的前提。

2. 绘制一个简单的三维立方体利用OpenGL提供的函数,我们可以很容易地绘制一个简单的三维立方体。

通过设置顶点坐标和法向量,我们可以使用OpenGL提供的函数来绘制出一个立方体。

3. 添加光照效果和材质在绘制立方体的基础上,我们可以通过设置光源的位置和颜色,以及物体的材质属性,来实现光照效果和材质的渲染。

这一步可以让我们的立方体看起来更加真实。

4. 实现简单的相机控制通过控制相机的位置和方向,我们可以实现简单的相机控制。

这样可以让我们在3D场景中自由地移动和观察物体。

5. 添加纹理贴图最后,我们可以通过加载纹理图片,并将其贴到立方体的表面上,来实现纹理贴图。

这样可以让我们的立方体看起来更加生动和具有真实感。

五、实验总结通过本次实验,我们学习了如何使用OpenGL图形库进行3D图形编程,掌握了基本的操作和常用函数。

同时,我们也实现了一个简单的3D场景,包括绘制立方体、添加光照效果和材质、实现相机控制以及添加纹理贴图。

这些技术和知识对于今后的图形编程工作将会有很大的帮助。

计算机图形学课程设计-三维真实感图形设计与绘制

计算机图形学课程设计-三维真实感图形设计与绘制

计算机图形学课程设计报告一、实验题目三维真实感图形设计与绘制(1)题目内容说明:本题目要求应用OpenGL的光照技术和纹理技术实现一个简单的三维真实感图形的程序设计。

具体要求实现功能:1)通过对话方式实现交互式设计光照模型功能。

2)实现三维模型纹理映射功能3)用鼠标跟踪球方法实现三维模型的空间旋转2)实现鼠标跟踪球方法程序二、需求分析真实感图形的设计与绘制,是计算机图形学中的一个重要研究领域,也是三维实体造型系统和特征造型系统的重要组成部分。

一般地,三维实体在计算机显示屏上有三种表现形式:简单线框图、线框消隐图和真实感图形。

其中,简单线框图能够粗略表达实体的形状,但由于简单线框图的二义性,从而导致表达其的实体形状具有不确定性。

而线框消隐图虽然能反映实体各表面间的相互遮挡关系,从而达到消除简单线框图产生的二义性的目的,但是这两者一样地只能反映实体的几何形状和实体间的相互关系,而不能反映实体表面的特征,如表面的颜色、材质、纹理等。

所以,只有真实感图形才能表现实体的这些特征,因此,在三维实体造型中,生成三维实体的光照模型,进行实体的真实感绘制与显示占有重要的地位,是很有必要的,也是我做此设计的初衷。

在设计中,我主要使用Opengl绘制真实感图形,它作为一种强大的三维图形开发工具,通过便捷的编程接口提供了处理光照和物体材质、颜色属性等通用功能。

真实感图形学是计算机图形的核心内容之一,是最能直接反映图形学魅力的分支。

寻求能准确地描述客观世界中各种现象与景观的数学模型,并逼真地再现这些现象与景观,是图形学的一个重要研究课题。

很多自然景物难以用几何模型描述,如烟雾、植物、水波、火焰等。

本文所讨论的几种建模及绘制技术都超越了几何模型的限制,能够用简单的模型描述复杂的自然景物。

在计算机的图形设备上实现真实感图形必须完成的四个基本任务。

1. 三维场景的描述。

三维造型。

2. 将三维几何描述转换成为二维透视图。

透视变换。

基于OpenGL的三维游戏场景设计与渲染

基于OpenGL的三维游戏场景设计与渲染

基于OpenGL的三维游戏场景设计与渲染在当今数字游戏行业中,三维游戏场景设计与渲染一直是开发者们关注的焦点之一。

随着技术的不断进步和发展,基于OpenGL的三维游戏场景设计与渲染技术也日益成熟和普及。

本文将深入探讨基于OpenGL的三维游戏场景设计与渲染,包括其原理、流程、技术特点以及应用实例等方面的内容。

一、OpenGL简介OpenGL(Open Graphics Library)是一种跨平台的图形编程接口,广泛应用于计算机图形学、模拟、虚拟现实等领域。

作为一种开放标准,OpenGL提供了丰富的函数库,可以帮助开发者实现各种复杂的图形渲染效果。

二、三维游戏场景设计与渲染流程1. 场景建模在进行三维游戏场景设计时,首先需要进行场景建模。

通过建模软件(如Blender、Maya等),开发者可以创建各种物体、地形、角色等元素,并对其进行纹理贴图、动画设置等操作。

2. 光照与材质光照和材质是影响三维场景真实感的重要因素。

在OpenGL中,开发者可以通过设置光源类型、光照强度、材质属性等参数来模拟真实世界中的光照效果,从而使场景更加逼真。

3. 渲染技术在OpenGL中,常用的渲染技术包括光栅化渲染和射线追踪。

光栅化渲染是将三维物体投影到二维屏幕上进行渲染,而射线追踪则是通过模拟光线在场景中的传播路径来计算像素颜色值。

4. 特效与后期处理为了增强游戏场景的视觉效果,开发者还可以添加各种特效,如雾化效果、抗锯齿等,并通过后期处理技术对图像进行调色、模糊等处理。

三、基于OpenGL的三维游戏场景设计案例分析1.《我的世界》《我的世界》是一款使用OpenGL进行渲染的开放世界沙盒游戏。

通过方块式的画面风格和丰富多样的游戏内容,吸引了全球数百万玩家。

2.《巫师3:狂猎》《巫师3:狂猎》是一款采用OpenGL技术制作的大型角色扮演游戏。

游戏中精美逼真的画面和复杂多变的场景设计为玩家呈现了一个奇幻世界。

四、结语基于OpenGL的三维游戏场景设计与渲染技术在数字游戏行业中扮演着重要角色,为开发者提供了丰富多彩的创作空间。

《计算机图形学》课内实验报告(实验一)

《计算机图形学》课内实验报告(实验一)
PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
PFNGLUNIFORM1FARBPROC glUniform1fARB;
PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
#ifndef __APPLE__
PFNGLSECONDARYCOLOR3FPROC glSecondaryColor3f;
{
GLbyte infoLog[MAX_INFO_LOG_SIZE];
glGetInfoLogARB(progObj, MAX_INFO_LOG_SIZE, NULL, infoLog);
fprintf(stderr, "Error in program linkage!\n");
fprintf(stderr, "Info log: %s\n", infoLog);
// Demonstrates high-level shaders
// Program by Benjamin Lipchak
#include "../../Common/OpenGLSB.h" // System and OpenGL Stuff
#include "../../Common/GLTools.h" // System and OpenGL Stuff
// Initially set the blink parameter to 1 (no flicker)
if (flickerLocation != -1)
glUniform1fARB(flickerLocation,1.0f);
// Program object has changed, so we should revalidate

计算机图形学OpenGL(第三版)第二章

计算机图形学OpenGL(第三版)第二章

const int screenWidth = 640; // width of screen window in pixels const int screenHeight = 480; // height of screen window in pixels GLdouble A, B, C, D; // values used for scaling and shifting void myInit(void) {glClearColor(1.0,1.0,1.0,0.0); // background color is white glColor3f(0.0f, 0.0f, 0.0f); // drawing color is black glPointSize(2.0); // a 'dot' is 2 by 2 pixels glMatrixMode(GL_PROJECTION); // set "camera shape" glLoadIdentity(); gluOrtho2D(0.0, (GLdouble)screenWidth, 0.0, (GLdouble)screenHeight); A = screenWidth / 4.0; // x方向的缩放量A B = 0.0; //x方向的平移量B C = D = screenHeight / 2.0;// y方向的缩放量C和平移量D } void myDisplay(void) {glClear(GL_COLOR_BUFFER_BIT); // clear the screen glBegin(GL_POINTS); for(GLdouble x = 0; x < 4.0 ; x += 0.005) { Gldouble func = exp(-x) * cos(2 * 3.14159265 * x); //sx= A * x + B, sy =C * y + D glVertex2d(A * x + B, C * func + D); } glEnd(); glFlush(); // send all output to display }

计算机图形学实验代码及截图

计算机图形学实验代码及截图

目录实验一:OpenGL基础知识 0实验二 OpenGL中的建模与变换 (1)实验三 OpenGL中的光照 (4)实验四 OpenGL中的拾取 (7)实验五 OpenGL中的纹理映射 (10)实验一:OpenGL基础知识一、实验目的1、建立Windows系统下的OpenGL实验框架。

2、学习理解OpenGL工作流程。

二、实验环境⒈硬件:每个学生需配备计算机一台。

⒉软件:Visual C++;三、实验内容1、建立非控制台的Windows程序框架。

2、建立OpenGL框架。

3、建立OpenGL框架的类文件。

4、完善Windows框架。

5、理解程序间的相互关系。

四、实验要求1、学习教材第2章的内容。

2、理解教材中相关实例的代码,按要求添加到适当的地方,调试并通过运行。

3、运行结果应该与教材中的相关实例相符。

4、编译第2章的框架代码,修改背景色、窗口标题。

五、程序设计提示(略)六、报告要求1.认真书写实验报告,字迹清晰,格式规范。

报告中应写清姓名、学号、实验日期、实验题目、实验目的、实验原理。

2.报告中应书写主要源程序,且源程序中要有注释。

3.报告中应包含运行结果及结果分析。

如调试通过并得到预期的效果,请注明‘通过’并粘贴运行效果图;如未调试通过或结果不正确,试分析原因。

4.报告最后包含实验总结和体会。

实验二 OpenGL中的建模与变换一、实验目的1.学习配置OpenGL环境。

2.掌握在OpenGL中指定几何模型的方法。

3. 掌握OpenGL中的透视投影和正投影的设置方法,学会诊断投影问题导致的显示异常。

二、实验环境⒈ 硬件:每个学生需配备计算机一台。

⒉ 软件:Visual C++;三、实验内容1.建立OpenGL编程环境(注:Windows自带gl和glu,还需要安装glut库文件。

)(a)查看Windows自带的OpenGL文件。

在文件夹c:\windows\system32下查看是否存在文件opengl32.dll和glu32.dll;在Visual Studio的安装目录Vc7\PlatformSDK\Include\gl下查看是否存在gl.h和glu.h;在Vc7\PlatformSDK\Lib 下是否存在opengl32.lib和glu32.lib。

计算机图形学OpenGL版实验5-8

计算机图形学OpenGL版实验5-8

实验5 OpenGL模型视图变换一、实验目的:理解掌握OpenGL程序的模型视图变换。

二、实验内容:(1)阅读实验原理,运行示范实验代码,理解掌握OpenGL程序的模型视图变换;(2)根据示范代码,尝试完成实验作业;三、实验原理:在代码中,视图变换必须出现在模型变换之前,但可以在绘图之前的任何时候执行投影变换和视口变换。

1.display()程序中绘图函数潜在的重复性强调了:在指定的视图变换之前,应该使用glLoadIdentity()函数把当前矩阵设置为单位矩阵。

2.在载入单位矩阵之后,使用gluLookAt()函数指定视图变换。

如果程序没有调用gluLookAt(),那么照相机会设定为一个默认的位置和方向。

在默认的情况下,照相机位于原点,指向Z轴负方向,朝上向量为(0,1,0)。

3.一般而言,display()函数包括:视图变换 + 模型变换 + 绘制图形的函数(如glutWireCube())。

display()会在窗口被移动或者原来先遮住这个窗口的东西被一开时,被重复调用,并经过适当变换,保证绘制的图形是按照希望的方式进行绘制。

4.在调用glFrustum()设置投影变换之前,在reshape()函数中有一些准备工作:视口变换 + 投影变换 + 模型视图变换。

由于投影变换,视口变换共同决定了场景是如何映射到计算机的屏幕上的,而且它们都与屏幕的宽度,高度密切相关,因此应该放在reshape()中。

reshape()会在窗口初次创建,移动或改变时被调用。

OpenGL中矩阵坐标之间的关系:物理坐标*模型视图矩阵*投影矩阵*透视除法*规范化设备坐标——〉窗口坐标(1)视图变换函数gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0,)设置照相机的位置。

把照相机放在(0,0,5),镜头瞄准(0,0,0),朝上向量定为(0,1,0)朝上向量为照相机指定了一个唯一的方向。

计算机图形学OpenGL(第三版)课件

计算机图形学OpenGL(第三版)课件
计算机图形学 OpenGL(第三版)课 件
REPORTING
• 计算机图形学概述 • OpenGL基础知识 • 3D图形绘制 • 动画与交互 • 高级技术与应用 • 案例与实践
目录
PART 01
计算机图形学概述
REPORTING
计算机图形学的定义与分类
计算机图形学是一门研究计算机生成 和操作图形的科学,它通过数学算法 和计算机程序实现二维和三维图形的 生成、渲染和交互。
虚拟现实中的图形渲染技术
3D场景构建
利用OpenGL的3D图形渲染能力,构建逼真的虚拟现实场景,提供 沉浸式的体验。
实时交互与动态渲染
在虚拟现实中实现实时交互,如人物移动、视角变换等,同时根据 用户行为动态调整渲染效果,提高虚拟现实的真实感和沉浸感。
虚拟现实应用开发
结合OpenGL技术,开发各种虚拟现实应用,如虚拟旅游、虚拟展览 、虚拟教育等,拓展虚拟现实技术的应用领域。
OpenGL库(如GLUT或GLEW )。
对于Linux系统,需要安装 OpenGL库(如GLUT或SDL) 和相应的编译器。
开发者还需要了解如何配置项 目以包含OpenGL头文件和链 接OpenGL库。
OpenGL基本操作
01
02
03
04
05
初始化OpenGL 上下文
绘制基本图形
变换和投影
光照和材质
纹理映射
创建窗口,设置窗口回调 函数,创建渲染上下文等 。
使用OpenGL提供的函数绘 制点、线、多边形等基本 图形。
理解并使用平移、旋转、 缩放等变换以及投影矩阵 。
设置光源、材质属性以及 光照模型。
加载和绑定纹理,对几何 图形进行纹理映射。

基于OpenGL的3D虚拟场景设计与实现

基于OpenGL的3D虚拟场景设计与实现

基于OpenGL的3D虚拟场景设计与实现院系专业班级学号姓名指导教师负责教师沈阳航空航天大学2010年6月摘要虚拟现实技术是一门新兴的学科,是迄今为止最强的人机接口技术,也是一项最基本最重要的研究内容。

目前,虚拟现实技术已广泛应用到许多领域。

虚拟现实技术是利用计算机中高逼真的虚拟环境,并通过多种传感器接口,使用户“沉浸”到该虚拟环境中,从而实现用户与虚拟环境之间的交互。

建立虚拟系统的首要问题便是虚拟环境的构建。

本文主要论述了如何构建一幅“天涯共此时”的虚拟场景。

该场景的实现基于OpenGL绘图知识和MFC编程原理及应用程序的整体框架。

在此基础上,本文主要开展了以下几个方面的研究工作:一、对OpenGL的编程功能和工作原理进行了分析,包括绘图流程以及OpenGL 的主要功能。

对编程开发工具VC++进行了简单介绍,并概括出MFC的编程原理及应用程序的整体框架。

此外,还分析了OpenGL绘制图形的优化工具——显示列表的使用与管理以及OpenGL绘制复杂图形的方法—图形变换。

二、利用MFC框架和OpenGL的显示列表知识以及有关绘图函数,完成了复杂的雪花、花瓣、弯月、灯笼的绘制,实现了一幅“天涯共此时”场景的天空场景,同时,还实现了花瓣飞舞、雪花飞舞、灯笼随风飘动、花瓣飞舞场景与雪花飞舞场景的相互转化等功能。

三、基于图形方法,利用OpenGL绘图函数,实现了由小树、小人、小房子组成的地面场景的绘制,使整个虚拟场景看起来更加和谐、唯美。

关键词:虚拟场景;OpenGL;显示列表;图形变换Design and Implementation of 3D virtual Scene Using OpenGLAbstractAs a rising subject, virtual reality is the best human-machine interface technology, and it is also the fundamental and important study content. At present, the virtual reality technology has broad applications to many areas. Virtual reality technology is the use of sensor interface, users can immerse to the virtual environment. And through a variety of senor interface, users can immerse to the virtual environment, achieving interaction between user and the virtual environment.This paper elaborates how to establish a scene of “Time Together Across the Strait”. On this base, this paper carried out research in these aspects as follows:Firstly, make some analysis about OpenGL programming and working theory, including the drawing process and the main functions of OpenGL and so on. Make an introduction about VC++, at the same time summarize programming principles of MFC and application frame work. Besides, analyze rendering graphics optimization tools of OpenGL—the use and management of display list, and the method of drawing complex graphics—graphics transformation.Second, using MFC framework and OpenGL display list and relevant drawing function knowledge, finished drawing complex snowflakes, petals, moon, lantern. R ealize the scene of “Time Together Across the Strait”, but also achieve the scene of petals flying, snowflakes dancing, waving lantern dancing with the wind and the mutual transformation function of petal flying and snowflakes dancing.In the end, basing on the method of graphics, realize the construction of ground system consisting of tree, little people and small house, make whole virtual scene look more harmonious and beautiful.Keywords: virtual environment; OpenGL; display list; graphics transformation目录1 绪论 (1)1.1 虚拟现实的发展及研究现状 (1)1.1.1 虚拟现实的起源和发展 (1)1.1.2 国内外研究现状 (2)1.2 基于OpenGL的系统实现方法 (4)1.2.1 OpenGL图形库技术 (4)1.2.2 VC++编程平台及MFC库 (6)1.3 小结 (9)2 需求分析 (10)2.1 任务背景及目标 (10)2.2 任务功能分析 (11)2.3 系统开发技术 (12)2.3.1 显示列表技术 (12)2.3.2 场景变换原理 (13)2.4 小结 (13)3 软件设计与实现 (14)3.1 总体设计 (14)3.2 天空模块 (16)3.2.1 天空模块功能及原理 (16)3.2.2 天空模块中的数学关系 (17)3.2.3 天空模块的算法实现 (18)3.2.4 基于OpenGL的天空模块的设计与实现 (20)3.3 灯笼模块 (20)3.3.1 灯笼模块的功能及原理 (20)3.3.2 基于OpenGL的灯笼模块的算法设计与实现 (21)3.4 地面模块 (22)3.4.1 地面模块功能及原理 (22)3.4.2 基于OpenGL的地面模块的算法设计与实现 (23)3.5 小结 (24)4 软件测试和运行 (25)4.1 实验环境 (25)4.2 环境配置 (25)4.3 运行结果 (27)参考文献 (30)致谢 (31)1 绪论虚拟现实技术是近年来十分活跃的技术研究领域,是一系列高新技术的汇集,这些技术包括计算机图形学、多媒体技术、人工智能、人机接口技术、传感技术以及高度并行的实时计算技术,还包括人的行为学研究等多项关键技术。

三维图形的光照、贴图及阴影处理(OpenGL)

三维图形的光照、贴图及阴影处理(OpenGL)

三维图形的光照、贴图及阴影处理(OpenGL)实验过程:一、在VS6.0中建立新工程。

1、新建一个Win32 Application的工程。

2、向工程项目添加C++源文件。

3、将OpenGL框架复制到文件中。

4、设置OpenGL窗口标题。

二、场景设置。

1、视线处于一具有地板及前、左、右三面墙壁的空间中。

2、空间顶部中央有一光源。

3、空间中央有一地球仪,不断旋转。

三、建立视口结构及视点属性。

1、在坐标系上建立视图结构。

如图。

2、参数设置。

窗口大小:800*600。

视口大小:800*600。

透视深度:0.1~100。

透视角:60°。

视点位置:(0.0, 2.0, 15.0)。

视线方向:z轴负方向。

视点上方向:y轴正方向。

3、调用函数glViewport()、gluPerspective()和gluLookAt()实现。

四、绘制三维图形。

1、开启深度测试模式。

为防止图形重叠时出现层次混乱,必须对绘制图形进行消隐处理。

直接调用函数glEnable(GL_DEPTH_TEST)开启深度测试。

2、绘制地面与墙壁。

调用OpenGL基本几何元素绘制过程glBegin(GL_QUADS)、glBegin(GL_QUAD_STRIP)绘制四个平面,坐标范围为:x: -10~10, y: -2~20, z: -10~10。

坐标系结构如图。

3、绘制地球仪。

设计函数void DrawEarth()实现地球仪的绘制,分别调用OpenGL球面绘制函数gluSphere()绘制地球形状、柱面绘制函数gluCylinder()绘制地轴两头形状。

(1)参数设置。

球面半径:2。

球面细度:水平100,垂直100。

柱面半径:0.05。

柱面高度:1。

柱面细度:水平50,垂直1。

(2)结构如图。

4、绘制模拟光源。

(1)绘制“灯罩”。

调用glBegin(GL_TRIANGLE_STRIP)绘制4个三角形,构成棱椎形灯罩的4个侧面。

(2)绘制“灯泡”。

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

O p e n G L室内三维环境(北邮计算机图形学作业)-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII计算机图形学第二次作业姓名:学号:学院:任课教师:一.设计要求试设计一个室内三维环境,并利用OPEN GL展示它的三维效果。

要求:(1)包含基本的实体元素:球,多面体,椎体,柱体,曲面等;(2)有全局光照和纹理功能(3)程序具有交互功能二.交互说明键盘的4个按键:上键:视角上移下键:视角下移左键:视角左移右键:视角右移三.效果展示四.程序代码#include<stdlib.h>#include<stdio.h>#include"glew.h"#include"glut.h"#include<windows.h>#pragma comment (lib, "glew32.lib")#define checkImageWidth 64#define checkImageHeight 64static GLubyte checkImage[checkImageHeight][checkImageWidth][4]; static GLuint texName;static GLfloat xrot=0;static GLfloat yrot=0;//函数功能:绘制地面纹理图案void makeCheckImage(void){int i, j, c;for (i = 0; i < checkImageHeight; i++) {for (j = 0; j < checkImageWidth; j++) {c = ((((i&0x16)==0)^((j&0x16))==0))*255;checkImage[i][j][0] = (GLubyte) c;checkImage[i][j][1] = (GLubyte) c;checkImage[i][j][2] = (GLubyte) c;checkImage[i][j][3] = (GLubyte) 255;}}}//函数功能:初始化void SetupRC(void){glEnable(GL_LIGHTING); //启用灯源glEnable(GL_LIGHT0); //启用0号灯glShadeModel(GL_SMOOTH); //设置光滑着色模式glEnable(GL_DEPTH_TEST); //启用深度测试glEnable(GL_NORMALIZE); //启用法向量glClearColor(1.0f, 1.0f, 1.0f, 0.0f); //为色彩缓冲区指定用于清除的值//设置表面材料的属性GLfloat mat_ambient[] = {0.6f,0.6f,0.6f,1.0f};GLfloat mat_diffuse[] = {0.5f,0.5f,0.5f,1.0f};GLfloat mat_specular[] = {1.0f,1.0f,1.0f,1.0f,};GLfloat mat_shininess[] = {40.0f};glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); //指定环境泛光的强度glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); //漫反射的强度glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); //镜面反射的强度glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); //镜面反射光的会聚强度//纹理makeCheckImage(); //绘制地面纹理图案glPixelStorei(GL_UNPACK_ALIGNMENT, 1); //控制像素存储模式glGenTextures(1, &texName); //用来生成纹理的数量为1glBindTexture(GL_TEXTURE_2D, texName); //绑定纹理//纹理滤波,图象从纹理图象空间映射到帧缓冲图象空间glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth,checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage);}//函数功能:绘制墙壁void DrawWall(void){glPushMatrix(); //矩阵堆栈压入glTranslated(1.2, 0.01, 1.2); //将变换矩阵与当前矩阵相乘,使原点移动到(参数值坐标)glScaled(2.4, 0.02, 2.4); //将比例矩阵与当前矩阵相乘,将当前图形沿x,y,z轴分别放大为原来的(参数值)倍glutSolidCube(1.0); //size=1.0的实心立方体glPopMatrix(); //矩阵堆栈弹出}//函数功能:绘制立方柱体void DrawPillar(void){glPushMatrix();glTranslated(0, 0.15, 0);glScaled(0.02, 0.3, 0.02);glutSolidCube(1.0);glPopMatrix();}//函数功能:绘制桌子void DrawTable(void){glPushMatrix();glTranslated(0.05, 0.3, 0.05);glScaled(0.6, 0.02, 0.6);glutSolidCube(1.0); //绘制桌面glPopMatrix();glPushMatrix();glTranslated(0.275, 0, 0.275);DrawPillar(); //绘制桌腿glTranslated(0, 0, -0.45);DrawPillar(); //绘制桌腿glTranslated(-0.45, 0, 0.45);DrawPillar(); //绘制桌腿glTranslated(0, 0, -0.45);DrawPillar(); //绘制桌腿glPopMatrix();}//函数功能:绘图void RenderScene(void){GLfloat light_position[]={2.0f, 6.0f, 3.0f, 0.0f};glLightfv(GL_LIGHT0,GL_POSITION,light_position); //指定0号光源的位置glMatrixMode(GL_PROJECTION); //对投影矩阵应用随后的矩阵操作glLoadIdentity(); //将当前的用户坐标系的原点移到了屏幕中心GLfloat h = 1.0; //窗口的一半高度glOrtho(-h*64/48.0, h*64/48.0, -h, h, 0.1, 100.0); //将当前的可视空间设置为正投影空间:左,右,下,上,近,远。

glMatrixMode(GL_MODELVIEW); //对模型视景矩阵堆栈应用随后的矩阵操作glLoadIdentity();gluLookAt(2, 1.6, 2, 0, 0.2, 0, 0, 1, 0); //设置观察坐标系//开始绘制glRotatef(xrot, 1.0f, 0.0f, 0.0f); //旋转轴经过原点,方向为(1,0,0),旋转角度为xrot,方向满足右手定则glRotatef(yrot, 0.0f, 1.0f, 0.0f); //旋转轴经过原点,方向为(0,1,0),旋转角度为yrotglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glPushMatrix();glRotated(90.0, 0.0, 0.0, 1.0);DrawWall(); //绘制一面墙壁glPopMatrix();glPushMatrix();glRotated(-90.0, 1.0, 0.0, 0.0);DrawWall(); //绘制另一面墙壁glPopMatrix();glPushMatrix();glTranslated(0.4, 0, 0.4);DrawTable(); //绘制桌子glPopMatrix();glPushMatrix();glTranslated(0.2, 0.1, 0.85);glScaled(0.8, 0.8, 1.0);glutSolidCube(0.2); //绘制箱子glPopMatrix();glPushMatrix();glTranslated(0.6, 0.38, 0.6);glRotated(-100, 0, 1, 0);glutSolidTeapot(0.1); //绘制茶壶glPopMatrix();glPushMatrix();glTranslated(0.3, 0.33, 0.5);glRotated(180, 0, 180, 180);glutSolidTorus(0.02f, 0.05, 25, 50);//绘制手镯【丝状花环】glPopMatrix();glPushMatrix();glTranslated(0.45, 0.42, 0.3);glutSolidSphere(0.1, 15, 50); //绘制球体glPopMatrix();glPushMatrix();glTranslated(1.0, 0.35, 0.3);glScaled(0.03, 0.7, 0.03);glutSolidCube(1.0); //绘制灯柱glPopMatrix();glPushMatrix();glTranslated(1.0, 0.7, 0.3);glRotated(190, 180, 200, 270);glutSolidCone(0.15, 0.25f, 30, 25); //绘制圆锥型灯罩glPopMatrix();//绘制纹理glEnable(GL_TEXTURE_2D); //开启纹理glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);//映射方式glBegin(GL_QUADS); //绘制地面//绘制四边形并给出当前顶点所对应的纹理坐标glTexCoord2f(0.0, 0.0); glVertex3f(0.0, 0.0, 0.0);glTexCoord2f(0.0, 1.0); glVertex3f(0.0, 0.0, 2.4);glTexCoord2f(1.0, 1.0); glVertex3f(2.4, 0.0, 2.4);glTexCoord2f(1.0, 0.0); glVertex3f(2.4, 0.0, 0.0);glEnd();glDisable(GL_TEXTURE_2D); //关闭纹理glFlush(); //绘图结果显示到屏幕上}//函数功能:处理按键交互信息void SpecialKeys(int key, int x, int y){switch (key) {case GLUT_KEY_UP: //上键xrot += 1.0;break;case GLUT_KEY_DOWN: //下键xrot -= 1.0;break;case GLUT_KEY_LEFT: //左键yrot += 1.0;break;case GLUT_KEY_RIGHT: //右键yrot -= 1.0;break;default:break;}glutPostRedisplay(); //标记当前窗口需要重新绘制glFlush(); //绘图结果显示到屏幕上}//函数功能:改变窗口大小void ChangeSize(int w, int h){GLfloat lightPos[] = {-50.f, 50.0f, 100.0f, 1.0f};GLfloat nRange = 1.9f;if (h == 0)h = 1;glViewport(0, 0, w, h); //重新设置屏幕上的窗口大小glMatrixMode(GL_PROJECTION);//后继操作都在投影变换范围内glLoadIdentity(); //设置当前矩阵为单位矩阵//正交投影if (w <= h)glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange, nRange);elseglOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);glMatrixMode(GL_MODELVIEW); //选择模型观察矩阵glLoadIdentity(); //设置当前矩阵为单位矩阵glLightfv(GL_LIGHT0, GL_POSITION, lightPos);//重新定义光源}void main (){glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); //双缓存glutInitWindowSize(600, 400); //窗口大小glutInitWindowPosition(300, 100); //窗口位置glutCreateWindow("xdy room"); //创建窗口,名为xdy roomSetupRC(); //自定义的初始化函数glutDisplayFunc(RenderScene); //显示回调函数,用于绘图glutReshapeFunc(ChangeSize); //处理改变窗口大小glutSpecialFunc(SpecialKeys); //处理按键交互信息glutMainLoop(); //让GLUT框架开始运行, 处理交互事件}11。

相关文档
最新文档