- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
report4郭小明维图形程序设计电子科技大学
实验报告课程名称:三维图形程序设计
学 院:计算机科学与工程
专 业:计算机科学与技术
指导教师:曹跃
学生姓名:郭小明
学 号:2011060100010
实验成绩:日 期: 2013年 5 月 3 日电 子 科 技 大 学
实 验 报 告
实验四 OpenGL纹理映射编程实验
实验室名称:A2—412 实验时间:2013.5.3
一.实验目的
1、理解OpenGL纹理映射的相关原理;
2、掌握与纹理映射相关的OpenGL API函数及其用法;
3、熟悉纹理映射设置的基本步骤。
二.实验内容
(一)编程任务1——绘制一个具有纹理和光照的房间
为在第三次实验中生成的房间(如上图)添加数字图像生成的纹理。
要求:
使用纹理对象;
墙壁、地板和天花板的数字图像生成的纹理要不相同;
屋内至少有一个点光源;
可用右键菜单交互式的开启或关闭场景光照和纹理;
可用右键菜单设置纹理环境(GL_REPLACE和GL_MODULATE)。分析这两种方式中哪种适宜于有光照的环境下。
三.实验要求
实验前要做好充分准备;
实验中独立完成源程序编辑、编译、链接过程,运行并记录程序运行结果;
对程序结果进行分析。
四.实验报告
OpenGL纹理映射的基本原理和思想;
OpenGL纹理映射的基本步骤;
编程任务1
程序说明。说明程序的功能、结构。
编制的应用程序上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对编程过程中的问题进行分析,对执行结果进行分析。
写出源程序清单(详细注释)和执行结果。
实验结果的分析。
实验器材(设备、元器件):
Microsoft Windows XP Professional 版本2002
Service Pack 3
VC++ 6.0
六、
墙壁原图片
源程序:
#include math.h
#include stdlib.h
#include GL\glut.h
#include stdio.h
#define SIZE 512
GLint HITS;
int flag_xyz = 1;
int flag_light = 1;
int mousex,mousey;
float movex,movey,movez;
typedef struct {
GLubyte * image_data;
GLsizei width;
GLsizei height;
} Data;
Data* data[4];
GLuint textures[4];
float PI = 3.1415926;
void display();
void drawSphere(GLfloat,GLfloat,GLfloat,int);
float wide=0.8,height=0.8,Dept=0.8;
void init()
{
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_TEXTURE_2D);
//glPixelStoref(GL_UNPACK_ALIGNMENT,1);
glGenTextures(4,textures);
for(int i=0;i4;i++){
//printf(%d,textures[i]);
glBindTexture(GL_TEXTURE_2D,textures[i]);
glTexImage2D(
GL_TEXTURE_2D,
0, GL_RGB, data[i]-width,
data[i]-height , 0,
GL_RGB, GL_UNSIGNED_BYTE,
data[i]-image_data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
}
}
int wide_screen=300,height_screen=300;
float eyex = 0,eyey = 0,eyez = 1.7;
void resh
文档评论(0)