文档详情

电子科大实验4-三维图形程序设计要点.doc

发布:2017-06-05约1.51万字共25页下载文档
文本预览下载声明
实验报告 课程名称:三维图形设计 学  院:计算机科学与工程 专  业:计算机科学与技术 指导教师:周川 学生姓名: 学  号: 实验成绩: 日  期:  2014  年  5月  26日 电子科技大学计算机学院实验中心 电 子 科 技 大 学 实 验 报 告 一、实验四:OpenGL纹理映射编程实验 二、实验室名称:主楼A2-412 实验时间:2014年5月26日 三、实验目的: 1、理解OpenGL纹理映射的相关原理; 2、掌握与纹理映射相关的OpenGL API函数及其用法; 3、熟悉纹理映射设置的基本步骤。 四、实验原理: 1. openGL图形编程技术原理 2. 纹理映射、纹理参数设置、纹理坐标的自动生成、纹理对象、数字纹理、图片纹理、光照、变换、菜单。 3.BMP知识: 【基本组成】BMP文件是windows采用的图形文件格式,以像素为基本单位。一般由4部分组成,位图文件头,位图信息头,彩色表(24位不用彩色表),图像数据。 【解码相关】 windows.h中有BITMAPFILEHEADER和BITMAPINFOHEADER表示位图文件头和位图信息头。 一般BMP的24位图像是以BGR存储的,处理时需要注意。 一般BMP图像是从下到上,从左到右进行描述;PHOTOSHOP中有翻转行序(flip row over),采用了解码方便的从上到下从左到右描述,但处理时必须注意图像数据是相反的,高度是负值。 如果一个图像水平线字节数不是4的倍数,这行就用空字节补齐,通常是ASCII 0。 4. gluBuild2DMipmaps对BMP图片要求很低,任意大小都行,但是不太稳定。glTexImage2D支持64,128,256分辨率BMP,其他大小的可能会出现问题,稳定。 五、实验内容: (一)编程任务1——绘制一个具有纹理和光照的房间 为在第三次实验中生成的房间(如上图)添加数字图像生成的纹理。 要求: 使用纹理对象; 墙壁、地板和天花板的数字图像生成的纹理要不相同; 屋内至少有一个点光源; 可用右键菜单交互式的开启或关闭场景光照和纹理; 可用右键菜单设置纹理环境(GL_REPLACE和GL_MODULATE)。分析这两种方式中哪种适宜于有光照的环境下。 (二)编程任务2——绘制一个具有背景纹理的钟表 为在第二次次实验中生成的钟表上添加数字图像生成的纹理或者图片纹理。 六、实验器材(设备、元器件): 电脑型号 戴尔 System Inspiron N4110 笔记本电脑 操作系统 Windows 8 专业版 64位 ( DirectX 11 ) 软件环境 Microsoft Visual Studio Express 2012 for Windows Desktop OpenGL Glut3.7 七、实验步骤: 1.利用第三次实验的光照房间,去除多余功能。 2.用纹理对象和数字纹理进行贴图。 3.利用第二次实验的钟表,去除多余功能。 4.用纹理对象和如下BMP图片纹理进行贴图(PSCS6生成,大小480×480px,24位位图)。 BMP贴图图片(G://clockbg.bmp) BMP格式参数(无翻转行序) 八、实验数据及结果分析: (一)纹理房间 1. 代码: #includegl/glut.h #includestdio.h #define W 500//窗口宽 #define H 500//窗口高 //材质属性结构定义 typedef struct matattr{ GLfloat ambient[4]; GLfloat diffuse[4]; GLfloat specular[4]; GLfloat shininess; }matattr; //各种材质数据设置 matattr ball={ {0.2,0.3,0.3,1.0}, {0.3,0.3,0.85,1.0}, {0.5,0.5,0.81,1.0}, 50.0 }; matattr cone={ {0.3,0.0,0.0,1.0}, {0.6,0.0,0.0,1.0}, {0.8,0.6,0.6,1.0}, 50.0 }; matattr wall={ {0.2,0.5,0.5,1.0}, {0.2,0.5,0.5,1.0}, {0.9,0.9,0.9,1.0}, 100.0 }; matattr ceiling={ {0.5,0.5,0.7,1.0}, {0.5,0.5,0.9,1.0}, {0.9,0.9,0.9,1.0}, 100.0 }; matattr ground={ {0.9,0.0,0.4,1.0}, {0.9,0.0,0.4
显示全部
相似文档