openGL构造教室(7)

2020-02-22 10:51

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

glTexCoord2f(1,0);glVertex3f( -34.9f, -30.0f, -65.9f); glTexCoord2f(0,0);glVertex3f( -49.9f, -30.0f, -65.9f);

glEnd();

glBindTexture(GL_TEXTURE_2D,texture[3]);//贴空调纹理 glBegin(GL_QUADS);

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

glTexCoord2f(0,1);glVertex3f( -34.9f, 10.0f, -65.9f); glTexCoord2f(1,1);glVertex3f( -34.9f, 10.0f, -72.9f); glTexCoord2f(1,0);glVertex3f( -34.9f, -30.0f, -72.9f); glTexCoord2f(0,0);glVertex3f( -34.9f, -30.0f, -65.9f);

glEnd();

glBegin(GL_QUADS);

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

//贴空调纹理

glTexCoord2f(0,1);glVertex3f( -49.9f, 10.2f, -65.9f); glTexCoord2f(1,1);glVertex3f( -34.9f, 10.1f, -65.9f); glTexCoord2f(1,0);glVertex3f( -34.9f, 10.1f, -72.9f); glTexCoord2f(0,0);glVertex3f( -49.9f, 10.1f, -72.9f);

glEnd();

glDisable(GL_TEXTURE_2D);

glBegin(GL_QUADS);//绘制投影仪 glColor3f(1,1,1);

//glNormal3f(-1.0f, 0.0f, 0.0f); glVertex3f( 5.0f, 29.9f, -78.0f);

glVertex3f( -32.0f, 29.9f, -78.0f);

glVertex3f( 5.0f, projectory, -78.0f); glVertex3f( -32.0f, projectory, -78.0f);

glEnd();

glColor3f(0.521f,0.121f,0.0547f);

GLfloat diffusion2[]={0.521f,0.121f,0.0547f,1.0};

glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,diffusion2); glEnable(GL_TEXTURE_2D);//启用二维纹理 glBindTexture(GL_TEXTURE_2D,texture[1]); glBegin(GL_QUADS);

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

//绘制门

glTexCoord2f(0,1);glVertex3f( 49.9f, 20.0f, -69.9f); glTexCoord2f(1,1);glVertex3f( 49.9f, 20.0f, -45.0f); glTexCoord2f(1,0);glVertex3f( 49.9f, -30.0f, -45.0f); glTexCoord2f(0,0);glVertex3f( 49.9f, -30.0f, -69.9f);

31 / 40

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

glEnd();

glBindTexture(GL_TEXTURE_2D,texture[0]); GLint x=0,y=0; for(;x<3;x++) { }

glDisable(GL_TEXTURE_2D); GLuint i=0,j=0;//画天花板上的灯 glColor3f(1,1,1); for(;i<5;i++) {

for (;j<6;j++) {

glBegin(GL_QUADS);

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

glVertex3f( -40.0f+i*18, 29.9f, -75.0f+j*20); glVertex3f( -40.0f+i*18, 29.9f, -70.0f+j*20); glVertex3f(-35.0f+i*18, 29.9f, -70.0f+j*20); glVertex3f( -35.0f+i*18, 29.9f, -75.0f+j*20); glEnd();

32 / 40

glBegin(GL_QUADS);

glTexCoord2f(0,1);

glColor3f(0.521f,0.121f,0.0547f); //绘制右窗户 glVertex3f( 49.9f, 20.0f, -30.9f+x*30); glTexCoord2f(1,1);

glVertex3f( 49.9f, 20.0f, -13.9f+x*30); glTexCoord2f(1,0);

glVertex3f( 49.9f, 0.0f, -13.9f+x*30); glTexCoord2f(0,0);

glVertex3f( 49.9f, 0.0f, -30.9f+x*30);

glEnd();

glBegin(GL_QUADS);

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

//绘制窗户

glTexCoord2f(0,1);glVertex3f( -49.9f, 20.0f, -60.9f+x*28); glTexCoord2f(1,1);glVertex3f( -49.9f, 20.0f, -43.9f+x*28); glTexCoord2f(1,0);glVertex3f( -49.9f, 0.0f, -43.9f+x*28); glTexCoord2f(0,0);glVertex3f( -49.9f, 0.0f, -60.9f+x*28);

glEnd();

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

}

}

} j=0;

glPushMatrix();//黑板前一块高地 glColor3f(0.8f,1.0f,0.8f);

glTranslatef(0.0f,-29.0f,-70.0f);//

glScalef(65.0f,3.0f,10.0f);//将立方体变成长方体 glutSolidCube(1.0); glPopMatrix();

glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1);

glPushMatrix();

glColor3f(0.521f,0.121f,0.0547f);//讲台 glTranslatef(-0.0f,-20.0f,-65.0f);//

glScalef(20.0f,30.0f,6.0f);//将立方体变成长方体 glutSolidCube(1.0); glPopMatrix();

glPushMatrix();

glColor3f(0.521f,0.121f,0.0547f);//讲台 glTranslatef(0.0f,-5.0f,-60.0f);//

glScalef(30.0f,2.0f,8.0f);//将立方体变成长方体 glutSolidCube(1.0); glPopMatrix();

glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1);

glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1);

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

projector_dispaly1*************************************************** ****************函数作用:制造投影仪收起效果

****************************************************/ void projector_dispaly1(void) { }

33 / 40

projectory=projectory+0.05f; if(projectory>=28.0f) { }

glutPostRedisplay();

projectory=28.0f;

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

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

projector_dispaly2*************************************************** ****************函数作用:制造投影仪放下效果

****************************************************/ void projector_dispaly2(void) { }

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

dispaly*************************************************************** ****************函数作用:显示回调函数

**********************************************************/ void display(void) { }

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

reshape*************************************************************** ****************函数作用:窗口大小改变回调函数

***************************************************/ void reshape(intw,inth) {

WinWidth = w; WinHeight

= h;

glViewport(0,0,(GLsizei) w, (GLsizei) h);//???????

glMatrixMode( GL_PROJECTION);//指定哪一个矩阵是当前矩阵(看的程序好像都有这glLoadIdentity();//?????

gluPerspective(75.0f, (GLfloat)w/(GLfloat)h, 0.01f, 120.0f);

34 / 40

projectory=projectory-0.05f; if(projectory<=-5.0f) { }

glutPostRedisplay();

projectory=-5.0f;

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(1,1,1); DrawRoom(); DrawBlackboard(); DrawOtherThings(); DrawDesk(); glFlush();

个)?????

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

}

glMatrixMode(GL_MODELVIEW); glLoadIdentity();

glLightfv(GL_LIGHT0,GL_POSITION,light_position); gluLookAt(Eye.x, Eye.y, Eye.z, 0, 0, 0, 0, 1, 0);

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

OnKeyboard************************************************************ ****************函数作用:响应键盘操作

**********************************************************/ GLvoid OnKeyboard(unsignedcharkey, intx, inty) { }

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

OnSpecial************************************************************* ****************函数作用:响应特殊事件操作(其实也是响应键盘操作)********************************/ GLvoid OnSpecial(intkey, intx, inty) {

35 / 40

switch(key) { case 27: }

exit(0); break;

switch(key) {

caseGLUT_KEY_LEFT:

Eye.x -= 0.5; break;

caseGLUT_KEY_RIGHT:

Eye.x += 0.5; break;

caseGLUT_KEY_UP:

Eye.y += 0.5; break;

caseGLUT_KEY_DOWN:

Eye.y -= 0.5; break;


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

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

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

马上注册会员

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