openGL构造教室(3)

2020-02-22 10:51

虚拟现实与数据可视化课程作业董元 22011207

}

{ }

// 以只读方式打开文件测试文件是否能够打开 File=fopen(Filename,\); // 文件是否存在 if (File) { }

// 文件装入失败,返回NULL returnNULL;

// 存在,则关闭文件 fclose(File);

// 装入测试过已存在的文件

returnauxDIBImageLoad(Filename);

returnNULL;

/***************函数名称:

LoadTexture1********************************************************* ****************函数作用:装入位图文件并作为纹理贴图********************************************/ int LoadTexture1() {

int Status=FALSE;

AUX_RGBImageRec *TextureImage=0; glGenTextures(1, &texture[0]); {

Status=TRUE;

glBindTexture(GL_TEXTURE_2D, texture[0]);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TextureImage->sizeX, glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); if (TextureImage) {

if (TextureImage->data) { }

11 / 40

if (TextureImage=LoadBitmap(\))

TextureImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data);

// 释放资源

free (TextureImage->data);

虚拟现实与数据可视化课程作业董元 22011207

}

}

}

free(TextureImage);

return Status;

/***************函数名称:

LoadTexture2********************************************************* ****************函数作用:装入位图文件并作为纹理贴图********************************************/ int LoadTexture2() { }

/***************函数名称:

LoadTexture3********************************************************* ****************函数作用:装入位图文件并作为纹理贴图********************************************/ int LoadTexture3() {

int Status=FALSE;

12 / 40

int Status=FALSE;

AUX_RGBImageRec *TextureImage=0; glGenTextures(2, &texture[1]); { }

return Status;

Status=TRUE;

if (TextureImage=LoadBitmap(\))

glBindTexture(GL_TEXTURE_2D, texture[1]);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TextureImage->sizeX, glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); if (TextureImage) { }

if (TextureImage->data) { }

free(TextureImage);

free (TextureImage->data);

// 释放资源

TextureImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data);

AUX_RGBImageRec *TextureImage=0; glGenTextures(1, &texture[2]);

虚拟现实与数据可视化课程作业董元 22011207

}

if (TextureImage=LoadBitmap(\)) { }

return Status;

Status=TRUE;

glBindTexture(GL_TEXTURE_2D, texture[2]);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TextureImage->sizeX, glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); if (TextureImage) { }

if (TextureImage->data) { }

free(TextureImage);

free (TextureImage->data);

// 释放资源

TextureImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data);

/***************函数名称:

LoadTexture4********************************************************* ****************函数作用:装入位图文件并作为纹理贴图********************************************/ int LoadTexture4() {

int Status=FALSE;

AUX_RGBImageRec *TextureImage=0; glGenTextures(1, &texture[3]); {

Status=TRUE;

glBindTexture(GL_TEXTURE_2D, texture[3]);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TextureImage->sizeX, glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); if (TextureImage) {

if (TextureImage->data) { }

13 / 40

if (TextureImage=LoadBitmap(\))

TextureImage->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->data);

// 释放资源

free (TextureImage->data);

虚拟现实与数据可视化课程作业董元 22011207

free(TextureImage);

}

}

return Status;

}

/***************函数名称:

intlight************************************************************ ****************函数作用:初始化灯光设置

*******************************************************/ void initlight(void) {

glLightModelfv(GL_LIGHT_MODEL_AMBIENT,model_ambient); glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE); glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess); glLightfv(GL_LIGHT0,GL_POSITION,light_position0); glLightfv(GL_LIGHT0,GL_AMBIENT,mat_ambient); glLightfv(GL_LIGHT0,GL_DIFFUSE,white_light); glLightfv(GL_LIGHT0,GL_SPECULAR,white_light);

glLightfv(GL_LIGHT6,GL_POSITION,light_position6); glLightfv(GL_LIGHT6,GL_AMBIENT,mat_ambient); glLightfv(GL_LIGHT6,GL_DIFFUSE,white_light); glLightfv(GL_LIGHT6,GL_SPECULAR,white_light);

glEnable(GL_LIGHTING); glEnable(GL_LIGHT0);

glEnable(GL_COLOR_MATERIAL);

}

/***************函数名称:

init**************************************************************** ****************函数作用:初始化设置

**********************************************************/ void init(void) { glClearColor(0,0,0,0); glEnable(GL_TEXTURE_2D);

glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);

LoadTexture1();

14 / 40

虚拟现实与数据可视化课程作业董元 22011207

}

initlight();

glShadeModel(GL_SMOOTH);

glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); //指定材料着色的面 glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); //指定材料对镜面光的反射 glEnable(GL_DEPTH_TEST);// LoadTexture1();//载入纹理1 LoadTexture2();//载入纹理2 LoadTexture3();//载入纹理3 LoadTexture4();//载入纹理4

/***************函数名称:

DrawRoom************************************************************ ****************函数作用:绘制教室墙面以及两侧石柱*********************************************/ void DrawRoom() {

glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse1); glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat); glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess); glMaterialfv(GL_FRONT, GL_EMISSION, no_mat);

//----------------开始绘制房间

---------------------------------------------------------

15 / 40

glColor3f(0.8f, 1.0f, 0.8f);

glBegin(GL_QUADS); //glNormal3f用于定义点的法向量

glNormal3f(0.0f, 1.0f, 0.0f);

//绘制地板

glVertex3f(-50.0f, -30.0f, -80.0f); glVertex3f(-50.0f, -30.0f, 20.0f); glVertex3f( 50.0f, -30.0f, 20.0f); glVertex3f( 50.0f, -30.0f, -80.0f); glEnd();

glBegin(GL_QUADS); glColor3f(0.3,0.3,0.3);

glNormal3f(0.0f, -1.0f, 0.0f); glVertex3f(-50.0f, 30.0f, 20.0f); glVertex3f(-50.0f, 30.0f, -80.0f); glVertex3f( 50.0f, 30.0f, -80.0f); glVertex3f( 50.0f, 30.0f, 20.0f);

//绘制天花板

glEnd();


openGL构造教室(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:品管基础知识测试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: