计算机图形学报告材料Word文档格式.docx
- 文档编号:20988767
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:14
- 大小:489.18KB
计算机图形学报告材料Word文档格式.docx
《计算机图形学报告材料Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机图形学报告材料Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
实验日期
2017.12.13
实验人
一、实验目的、要求与环境
1.目的:
通过实验,学生应掌握通过计算机程序进行真实感图形绘制的基本原理,特别是对三维显示对象进行纹理映射的基本方法,将理论和实际应用切实结合起来。
2.要求:
对一个三维立方体进行旋转,对其6个不同的面进行6个不同图像的纹理映射,并进行投影变换与显示,分析增强后的视觉效果,提交实验报告。
3.环境:
Windows7操作系统
MicrosoftVisualStudio2005
OpenGL函数库
4.自带位图文件(换成你自己的图像文件):
二、实验内容与步骤
1.准备相关图像文件。
2.进行立方体各面图像与旋转速度的大体设计。
3.在Windows7操作系统上,打开MicrosoftVisualStudio2005,编写相关程序,完成程序主体框架结构。
4.编写六面体显示相关的程序代码。
5.编写六面体旋转相关的程序代码。
6.编写深度检测相关的程序代码。
7.编写纹理载入功能的相关程序代码。
8.编写纹理参数定义功能的相关程序代码。
9.编写纹理映射功能的相关程序代码。
10.对程序进行相关调试,修改程序,去除其中的BUG。
11.观察纹理映射后的六面体的旋转显示,与预想的结果进行对比,修改相关程序参数。
12.截屏,保留实验结果,进行实验结果分析,并撰写实验报告。
三、相关背景知识
1.图像读取可能需要的数据结构:
FILE*fp
BITMAPFILEHEADERbmpFH;
BITMAPINFOHEADERbmpIH;
unsignedchartemp;
2.文件打开的语句例句:
fp=fopen(fileName,"
rb"
);
3.读文件头的语句例句:
fread((void*)&
bmpFH,sizeof(BITMAPFILEHEADER),1,fp);
4.读信息头的语句例句:
fread((void*)&
bmpIH,sizeof(BITMAPINFOHEADER),1,fp);
5.文件指针移动的语句例句:
fseek(fp,bmpFH.bfOffBits,SEEK_SET);
6.读图像RGB数据的语句例句:
fread((void*)pBitmapData,1,bmpIH.biSizeImage,fp);
7.启用二维纹理的语句例句:
glEnable(GL_TEXTURE_2D);
8.产生纹理索引的语句例句:
glGenTextures(6,texture_id);
9.进行纹理绑定的语句例句:
glBindTexture(GL_TEXTURE_2D,texture_id[0]);
10.设置纹理放大的滤波参数的语句例句:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
11.设置纹理缩小的滤波参数的语句例句:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
12.设置纹理映射硬件加速的语句例句:
glTexParameteri(GL_TEXTURE_2D,GL_GENERATE_MIPMAP,GL_TRUE);
13.生成纹理的语句例句:
glTexImage2D(GL_TEXTURE_2D,0,
GL_RGB,width,height,0,
GL_RGB,GL_UNSIGNED_BYTE,pBitmapData);
14.进行纹理映射的语句例句:
glBegin(GL_QUADS);
glTexCoord2f(0.0,0.0);
glVertex3f(-2.0,-2.0,-2.0);
glTexCoord2f(1.0,0.0);
glVertex3f(-2.0,2.0,-2.0);
glTexCoord2f(1.0,1.0);
glVertex3f(2.0,2.0,-2.0);
glTexCoord2f(0.0,1.0);
glVertex3f(2.0,-2.0,-2.0);
glEnd()
四、编译过程截图
五、实验结果与分析
(下面是一个例子,换上你自己的图)
实验结果:
实验分析
程序通过glBindTexture(GL_TEXTURE_2D,lastTextureID);
语句,完成了恢复之前的纹理绑定功能。
程序的运行结果,是一个每个面都有图片的立方体旋转
程序通过t1=load_texture("
01.bmp"
)语句,完成了加载纹理功能。
程序通过glutDisplayFunc(&
display);
。
语句,完成了注册函数功能。
程序通过glutMainLoop();
语句,完成了循环调用功能。
程序通过glRotatef(angle,0.0f,0.0f,1.0f);
语句,完成了旋转功能。
程序通过glEnable(GL_TEXTURE_2D);
语句,完成了启用纹理功能。
程序通过glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
语句,完成了设置视角功能。
程序通过gluScaleImage(GL_RGB,语句,完成了进行像素缩放功能。
程序通过nTexturesglGe(1,&
texture_ID);
语句,完成了分配一个新的纹理编号功能。
六、程序源代码
#include<
windows.h>
//useasneededforyoursystem
gl/Gl.h>
gl/glu.h>
gl/glut.h>
cstdio>
cstdlib>
#include"
glaux.h"
#pragmacomment(lib,"
glaux.lib"
)
#defineGL_GENERATE_MIPMAP0x8191
//纹理图像数据
unsignedchar*pBitmapData;
intwidth;
intheight;
GLuinttexture_id[6];
AUX_RGBImageRec*pImage;
//<
<
myInit>
>
voidmyInit(void)//我的初始化程序
{
glEnable(GL_DEPTH_TEST);
//允许深度测试
glClearColor(1.0,1.0,1.0,0.0);
//设置背景色为白色
glMatrixMode(GL_PROJECTION);
//设置投影矩阵为当前矩阵
glLoadIdentity();
//载入单位矩阵
gluPerspective(75.0,800.0/600.0,0.01,100.0);
//设置视景体
gluLookAt(5,5,5,0,0,0,0,1,0);
//设置视点位置
glMatrixMode(GL_MODELVIEW);
//设置模型视点矩阵为当前矩阵
glViewport(0,0,640,480);
//设置视口
//启用二维文理
//getatextureid
//生成纹理索引
//loaddata0======================================================================
pImage=auxDIBImageLoadA("
1.bmp"
//载入纹理图像文件
//bindandpasstexuredataintoopenGL
//设定当前纹理
//setparameterstomakemipmaps
//设置纹理放大映射的滤波方式
//设置纹理缩小映射的滤波方式
//开启硬件加速
//createthetextures
glTexImage2D(GL_TEXTURE_2D,0,3,pImage->
sizeX,pImage->
sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,pImage->
data);
//loaddata1======================================================================
2.bmp"
//bindandpasstexuredataintoopenGL
glBindTexture(GL_TEXTURE_2D,texture_id[1]);
//loaddata2======================================================================
3.bmp"
glBindTexture(GL_TEXTURE_2D,texture_id[2]);
//loaddata3======================================================================
4.bmp"
glBindTexture(GL_TEXTURE_2D,texture_id[3]);
//loaddata4======================================================================
5.bmp"
glBindTexture(GL_TEXTURE_2D,texture_id[4]);
//loaddata5======================================================================
6.bmp"
glBindTexture(GL_TEXTURE_2D,texture_id[5]);
}
myDisplay>
//theredrawfunction
voidmyDisplay(void)//我的显示程序
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
//清除颜色与深度缓冲区
glRotatef(0.5,1.5,1.7,5);
//绕轴旋转一个角度
glRotatef(1,0,0,1);
//设置当前纹理=================================================
//glColor4f(0,1,0,0.1);
//开始绘制边形
//给出端点空间位置与纹理端点位置
glEnd();
glVertex3f(-2.0,-2.0,2.0);
glVertex3f(-2.0,2.0,2.0);
glVertex3f(2.0,2.0,2.0);
glVertex3f(2.0,-2.0,2.0);
//绘制结束
glVertex3f(2.0,-2.0,2.0);
//给出端点空间位置与纹理端
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 报告 材料