OpenGL &; GLSL训练(四)

目录

前言

一、在练习3的基础中为每个茶壶加入不同的材质

二、将练习3中的点光源改为不同的颜色

总结


前言

这次的作业比较简单,是在三的基础上为每个茶壶添加不同的贴图纹理


 

一、在练习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中的点光源改为不同的颜色

该操作已在练习3中实现,就不在这里附上代码了


总结

 

此次完成作业的效果如图


版权声明:本文为lzqlsm19原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。