1 / 56
文档名称:

计算机图形学课程设计.docx

格式:docx   大小:371KB   页数:56页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机图形学课程设计.docx

上传人:beny00001 2022/2/6 文件大小:371 KB

下载得到文件列表

计算机图形学课程设计.docx

相关文档

文档介绍

文档介绍:word
word
1 / 56
word
《计算机图形学》实验报告
题目: 3D真实感场景绘制
: 郭继杰
学号: 2014214168
班级: 地信141
学院(向前运动) (旋转)
7.纹理贴图过程
①载入位图图像:
AUX_RGBImageRec *LoadBMP(CHAR *Filename) //载入位图图象
{
FILE *File=NULL; //文件句柄
if (!Filename) //确保文件名已提供
{
word
word
9 / 56
word
returnNULL; //如果没提供,返回 NULL
}
File=fopen(Filename,"r"); //尝试打开文件
if (File) //判断文件是否存在?
{
fclose(File); //关闭句柄
return auxDIBImageLoadA(Filename); //载入位图并返回指针
}
returnNULL; //如果载入失败,返回 NULL
}
②位图转化成纹理:
int LoadGLTextures() //载入位图(调用上面的代码)并转换成纹理
{
int Status= FALSE; //状态指示器
AUX_RGBImageRec *TextureImage[2]; //创建纹理的存储空间
memset(TextureImage,0,sizeof(void *)*1);//将指针设为 NULL
//载入位图,检查有无错误,如果位图没找到则退出
if ((TextureImage[0]=LoadBMP("Data/"))&&(TextureImage[1]=LoadBMP("Data/")))
{
Status= TRUE; //将Status设为TRUE
glGenTextures(2, &texture[0]); //创建纹理
for(int loop=0;loop<2;loop++)
word
word
10 / 56
word
{
glBindTexture(GL_TEXTURE_2D,texture[loop]);//绑定纹理
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//设置滤波
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[loop]->sizeX, TextureImage[loop]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[loop]->data);//生成纹理
}
}
for (int loop=0; loop<2; loop++)
{
if (TextureImage[loop]!=NULL) //判断纹理是否存在
{
if (TextureImage[loop]->data!=NULL) //纹理图像是否存在
{
free(TextureImage[loop]->data); //释放纹理图像占用存
}
free(TextureImage[loop]); //释放图像结构
}
}
return Status;//返回 Status
}
③调用纹理
glBindTexture(GL_TEXTURE_2D, texture[0]); //选择纹理
glBegin(GL_QUADS);//开始绘制四边形
glTexCoord2f(, ); glVertex3f( , , ); // 纹理和四边形的右下
word
word
11