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中实现,就不在这里附上代码了


总结

 

此次完成作业的效果如图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值