目录
前言
这次的作业比较简单,是在三的基础上为每个茶壶添加不同的贴图纹理
一、在练习3的基础中为每个茶壶加入不同的材质
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 20.0, 0, 0, 0, 0, 1, 0);
glPushMatrix();
glRotatef(speed, 0.0f, 1.0f, 0.0f);
glTranslatef(8.0f, 0.0f, 0.0f);
glDisable(GL_LIGHTING);
glColor3f(1, 1, 1);
glutSolidSphere(0.15, 100, 100);
speed += 0.4;
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0, GL_POSITION, LightPosition0);
glPopMatrix();
//第一个壶
glPushMatrix();
glTranslatef(-4.0, 0.0, 0.0);
glRotatef(mouseX0, 0.0f, 1.0f, 0.0f);
glPushMatrix();
glTranslatef(4.0, 4.0, -4.0);
glDisable(GL_LIGHTING);
glColor3f(1.0, 0, 0);
glutSolidSphere(0.15, 100, 100);
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT2, GL_POSITION, LightPosition2);
glPopMatrix();
glMaterialfv(GL_FRONT, GL_AMBIENT, Ambient_Teapot1);
glMaterialfv(GL_FRONT, GL_DIFFUSE, Diffuse_Teapot1);
glMaterialfv(GL_FRONT, GL_SPECULAR, Specular_Teapot1);
glMaterialfv(GL_FRONT, GL_SHININESS, Shininess_Teapot1);
glutSolidTeapot(1.0);
glPopMatrix();
//第二个壶
glPushMatrix();
glRotatef(mouseX1, 0.0f, 1.0f, 0.0f);
glMaterialfv(GL_FRONT, GL_AMBIENT, Ambient_Teapot2);
glMaterialfv(GL_FRONT, GL_DIFFUSE, Diffuse_Teapot2);
glMaterialfv(GL_FRONT, GL_SPECULAR, Specular_Teapot2);
glMaterialfv(GL_FRONT, GL_SHININESS, Shininess_Teapot2);
glutSolidTeapot(1.0);
glPopMatrix();
//第三个壶
glPushMatrix();
glTranslatef(0, -3, 0);
glRotatef(mouseX2, 0.0f, 1.0f, 0.0f);
glMaterialfv(GL_FRONT, GL_AMBIENT, Ambient_Teapot3);
glMaterialfv(GL_FRONT, GL_DIFFUSE, Diffuse_Teapot3);
glMaterialfv(GL_FRONT, GL_SPECULAR, Specular_Teapot3);
glMaterialfv(GL_FRONT, GL_SHININESS, Shininess_Teapot3);
glutSolidTeapot(1.0);
glPopMatrix();
glDisable(GL_LIGHTING);
glColor3f(0, 1, 0);
glPushMatrix();
glTranslatef(-8.0, -6.0, 0);
glutSolidSphere(0.15, 100, 100);
glPopMatrix();
glLightfv(GL_LIGHT1, GL_POSITION, LightPosition1);
glutSwapBuffers();
}
修改了之前使用的Display函数,主要使用glMaterialfv()函数进行材质的修改
二、将练习3中的点光源改为不同的颜色
总结
此次完成作业的效果如图