资源简介
在OpenGL观察实验的基础上,通过实现实验内容,掌握OpenGL中消隐和光照的设置,并验证课程中消隐和光照的内容。
模型尺寸不做具体要求。要求修改代码达到以下要求:
1. 通过设置材料使得桌面和四条腿的颜色各不相同,分别为:(1, 0, 0), (0, 1, 0), (1, 1, 0), (0, 1, 1), (0, 0, 1);
2. 通过设置材料使得茶壶为金黄色;
3. 添加按键处理,移动场景中的光源,并能改变光源的颜色(在两种颜色间切换,颜色自己定义);
4. 修改茶壶的镜面反射系数,使之对光源呈现高光;
5. 在场景中添加一个聚光光源,其照射区域正好覆盖茶壶,并能调整改聚光光源的照射角度和朝向。
代码片段和文件信息
// glutEx1.cpp : 定义控制台应用程序的入口点。
//
#include
#include “glut.h“
float fTranslate;
float fRotate;
float fScale = 1.0f; // set inital scale value to 1.0f
bool bPersp = false;
bool bAnim = false;
bool bWire = false;
bool lightcolor = false;
float lx=5ly=5lz=5; //光源初始位置
bool bjuguang = false;
float spl=45; //裁剪角度参数
float spx=0spy=0; //光源朝向参数
int wHeight = 0;
int wWidth = 0;
void Draw_Leg();
void Draw_Triangle() // This function draws a triangle with RGB colors
{
glPushMatrix();
float mat_diffuse[] = {0.85f 0.65f 0.2f 1.0f};
float mat_specular[] = {0.6f 0.6f 0.6f 1.0f};
glMaterialfv(GL_FRONT GL_DIFFUSE mat_diffuse);
glMaterialfv(GL_FRONT GL_SPECULAR mat_specular);
glMateriali(GL_FRONT_AND_BACKGL_SHININESS50);
glTranslatef(0 0 4+1);
glRotatef(90 1 0 0);
glutSolidTeapot(1);
glPopMatrix();
glPushMatrix();
float specular1[] = {0 0 0 1.0f};
float color1[]={1001};
glMaterialfv(GL_FRONT GL_SPECULAR specular1);
glMaterialfv(GL_FRONT GL_DIFFUSE color1);
glTranslatef(0 0 3.5);
glScalef(5 4 1);
glColor3f(1.00.00.0);
glutSolidCube(1.0);
glPopMatrix();
glPushMatrix();
float color2[]={0101};
glMaterialfv(GL_FRONT GL_DIFFUSE color2);
glTranslatef(1.5 1 1.5);
glColor3f(0.01.00.0);
Draw_Leg();
glPopMatrix();
glPushMatrix();
float color3[]={1101};
glMaterialfv(GL_FRONT GL_DIFFUSE color3);
glTranslatef(-1.5 1 1.5);
glColor3f(1.01.00.0);
Draw_Leg();
glPopMatrix();
glPushMatrix();
float color4[]={0111};
glMaterialfv(GL_FRONT GL_DIFFUSE color4);
glTranslatef(1.5 -1 1.5);
glColor3f(0.01.01.0);
Draw_Leg();
glPopMatrix();
glPushMatrix();
float color5[]={0011};
glMaterialfv(GL_FRONT GL_DIFFUSE color5);
glTranslatef(-1.5 -1 1.5);
glColor3f(0.00.01.0);
Draw_Leg();
glPopMatrix();
glDisable(GL_COLOR_MATERIAL);
}
void Draw_Leg()
{
glScalef(1 1 3);
glutSolidCube(1.0);
}
void updateView(int width int height)
{
glViewport(00widthheight); // Reset The Current Viewport
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity(); // Reset The Projection Matrix
float whRatio = (GLfloat)width/(GLfloat)height;
if (bPersp) {
gluPerspective(45.0f whRatio0.1f100.0f);
//glFrustum(-3 3 -3 3 3100);
} else {
glOrtho(-3 3 -3 3-100100);
}
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
}
void reshape(int width int height)
{
if (height==0) // Prevent A Divide By Zero By
{
height=1; // Making Height Equal One
}
wHeight = height;
wWidth = width;
updateView(wHeight wWidth);
}
void idle()
{
glutPostRedisplay();
}
float eye[] = {0 0 8};
float center[] = {0 0 0};
void key(unsigned char k int x int y)
{
switch(k)
{
case 27:
c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-05-12 09:05 Ex5\Debug\
文件 36352 2016-05-20 14:58 Ex5\Debug\Ex5.exe
文件 468924 2016-05-20 14:58 Ex5\Debug\Ex5.ilk
文件 470016 2016-05-20 14:58 Ex5\Debug\Ex5.pdb
文件 237568 2008-09-16 14:54 Ex5\Debug\glut32.dll
文件 24379392 2016-05-20 15:13 Ex5\Ex5.sdf
文件 876 2015-05-08 11:49 Ex5\Ex5.sln
文件 12800 2015-05-08 12:58 Ex5\Ex5.suo
文件 26624 2016-05-20 15:13 Ex5\Ex5.v11.suo
目录 0 2016-05-10 19:44 Ex5\Ex5\
目录 0 2016-05-20 14:58 Ex5\Ex5\Debug\
文件 704 2016-05-20 14:58 Ex5\Ex5\Debug\cl.command.1.tlog
文件 1174 2016-05-20 14:58 Ex5\Ex5\Debug\CL.read.1.tlog
文件 288 2016-05-20 14:58 Ex5\Ex5\Debug\CL.write.1.tlog
文件 406 2016-05-10 19:44 Ex5\Ex5\Debug\Ex5.exe.em
文件 472 2016-05-10 19:44 Ex5\Ex5\Debug\Ex5.exe.em
文件 381 2016-05-20 14:58 Ex5\Ex5\Debug\Ex5.exe.intermediate.manifest
文件 66 2016-05-20 14:58 Ex5\Ex5\Debug\Ex5.lastbuildstate
文件 1702 2016-05-20 14:58 Ex5\Ex5\Debug\Ex5.log
文件 196 2016-05-10 19:44 Ex5\Ex5\Debug\Ex5_manifest.rc
文件 2 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 2 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 2 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 2 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 2 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 2 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 2 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 2 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 1492 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 3156 2016-05-20 14:58 Ex5\Ex5\Debug\li
文件 638 2016-05-20 14:58 Ex5\Ex5\Debug\li
............此处省略18个文件信息
- 上一篇:0.96寸OLED+原子STM32F4+IIC通信
- 下一篇:立体匹配图片集数量不多
相关资源
- opengl写的一个自行车
- OpenTK 安装文件
- opengl2048游戏源码
- OpenGL程序绘制贝塞尔曲线
- Learning Game Physics with Bullet Physics and
- 交通自动化控制界面 - 智能交通灯演
- OpenGLTexture
- OpenGLPro12
- openGL写的飞机动态射击模型
- 太阳系仿真源代码,opengl模型太阳系
- OpenGL 的 glut glaux
- 计算机图形学课程设计--OpenGL--太阳、
- Windows SDK 环境下 OpenGL实现
- OPenGL实现的虚拟校园环境漫游系统
- OpenGL函数与范例解析手册(中文)带
- Qt Creator中的3D绘图及动画教程(参照
- OpenGL依赖库
- 用VC和opengl开发的模仿cs的小游戏
- 二维/三维图形的几何变换基于OpenGL
- Qt下 用OpenGL 实现的模拟太阳系
- opengl实现的太阳系
- OpenGL 4 Shading Language Cookbook - Second Ed
- OpenGL从盒子飞出的气球
- opengl3D路灯
- 反向运动学演示程序含核心代码
- QtOpenGL以及Graphics-View框架整合的演示
- 基于Qt和GLSL的着色器演示程序+源代码
- OpenGL 4.0 Shading Language Cookbook
- opengl改进的有效边表算法
- 21个天空盒贴图 OPENGL
评论
共有 条评论