资源简介
综合练习
试设计一个室内三维环境, 并利用OPEN GL展示它的三维效果。要求:
(1)包含基本的实体元素:球、多面体、锥体、柱体、曲面等;
(2)有全局光照效果和纹理功能;
(3)程序具有交互功能.

代码片段和文件信息
#include
#include
#include
#include
#include
#include
static GLubyte checkImage[128][128][4];
static GLuint texName;
static GLfloat xrot=0;
static GLfloat yrot=0;
void Initial(void); //初始化
void floor(void); //绘制地面纹理
void table(void); //绘制桌子
void chair(void); //绘制椅子
void wall(void); //绘制墙壁
void pillar(void); //绘制柱体
void keyboard(int key int x int y); //处理键盘输入,用于交互
void sizeChange(int w int h); //改变窗口大小
void build(void); //构建室内三维模型
//主函数
void main ()
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(960 720); //设置窗口大小
glutInitWindowPosition(500 100); //设置窗口位置
glutCreateWindow(“室内三维环境“); //创建名为“室内三位环境“的窗口
Initial();
glutDisplayFunc(build); //构建模型
glutReshapeFunc(sizeChange); //处理窗口大小变化
glutSpecialFunc(keyboard); //处理按键交互信息
glutMainLoop(); //处理交互事件
}
//初始化
void Initial(void)
{
glEnable(GL_LIGHTING); //启动光源
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST); //删除隐藏的表面
glEnable(GL_NORMALIZE); //将阴影向量正则化
glClearColor(1.0f 1.0f 1.0f 0.0f);
//设置表面材料的属性
GLfloat mat_ambient[] = {0.6f0.6f0.6f1.0f};
GLfloat mat_diffuse[] = {0.5f0.5f0.5f1.0f};
GLfloat mat_specular[] = {1.0f1.0f1.0f1.0f};
GLfloat mat_shininess[] = {40.0f};
glMaterialfv(GL_FRONT GL_AMBIENT mat_ambient); //指定环境泛光的强度
glMaterialfv(GL_FRONT GL_DIFFUSE mat_diffuse); //漫反射的强度
glMaterialfv(GL_FRONT GL_SPECULAR mat_specular); //镜面反射的强度
glMaterialfv(GL_FRONT GL_SHININESS mat_shininess); //镜面反射光的会聚强度
floor(); //绘制地面纹理图案
glPixelStorei(GL_UNPACK_ALIGNMENT 1); //控制像素存储模式
glGenTextures(1 &texName); //生成纹理的数量为1
glBindTexture(GL_TEXTURE_2D texName); //绑定纹理
//纹理滤波,图象从纹理图象空间映射到帧缓冲图象空间
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_WRAP_T GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D 0 GL_RGBA 128
128 0 GL_RGBA GL_UNSIGNED_BYTE checkImage);
}
//绘制地面纹理图案
void floor(void)
{
int i j c;
for (i = 0; i < 128; i++) {
for (j = 0; j < 128; j++) {
c = ((((i&0x16)==0)^((j&0x16))==0))*255;
checkImage[i][j][0] = (GLubyte) c;
checkImage[i][j][1] = (GLubyte) c;
checkImage[i][j][2] = (GLubyte) c;
checkImage[i][j][3] = (GLubyte) 255;
}
}
}
//绘制墙壁
void wall(void)
{
glPushMatrix();
glTranslated(1.2 0.01 1.2);
glScaled(2.4 0.02 2.4);
glutSolidCube(1.0);
glPopMatrix();
}
//绘制立方柱体
void pillar(void)
{
glPushMatrix();
glTranslated(0 0.15 0);
glScaled(0.02 0.3 0.02);
glutSolidCube(1.0);
glPopMatrix();
}
//绘制桌子
void table(void)
{
//绘制桌面
glPushMatrix();
glTranslated(0.05 0.27 0.05);
glScaled(0.6 0.02 0.6);
glutSolidCube(1.0);
glPopMatrix();
//绘制桌腿
glPushM
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7189 2014-06-02 12:57 3D_Indoor\3D_Indoor.cpp
文件 4320 2014-06-02 12:41 3D_Indoor\3D_Indoor.dsp
文件 524 2014-06-02 12:37 3D_Indoor\3D_Indoor.dsw
文件 41984 2014-06-02 12:58 3D_Indoor\3D_Indoor.ncb
文件 53760 2014-06-02 12:58 3D_Indoor\3D_Indoor.opt
文件 1442 2014-06-02 12:57 3D_Indoor\3D_Indoor.plg
文件 196674 2014-06-02 12:57 3D_Indoor\Debug\3D_Indoor.exe
文件 239796 2014-06-02 12:57 3D_Indoor\Debug\3D_Indoor.ilk
文件 27226 2014-06-02 12:57 3D_Indoor\Debug\3D_Indoor.obj
I.A.... 3683820 2014-06-02 12:56 3D_Indoor\Debug\3D_Indoor.pch
文件 476160 2014-06-02 12:57 3D_Indoor\Debug\3D_Indoor.pdb
文件 132096 2014-06-02 12:57 3D_Indoor\Debug\vc60.idb
文件 77824 2014-06-02 12:57 3D_Indoor\Debug\vc60.pdb
目录 0 2014-06-02 12:57 3D_Indoor\Debug
目录 0 2014-06-02 12:58 3D_Indoor
----------- --------- ---------- ----- ----
4942815 15
- 上一篇:高并发撮合系统
- 下一篇:篮球24S定时的verilog程序
相关资源
- 计算机图形学 边填充算法实现代码
- 计算机图形学课设 画板
- 数据结构课件(北邮)
- 简易绘图程序(计算机图形学课程设
- 计算机图形学(openGL)代码
- 图形学集成程序dda、中点算法、多边
- 计算机图形实验(哈尔滨工程大学)
- 计算机图形学-全.rar
- 图形学 - OpenGL实现3种三维茶壶显示源
- 信号与系统郑君里北邮课件
- 卫星通信知识点总结不包含计算题
- 北邮 现代交换原理实验 sip电话 抓包
- 警察抓小偷游戏 x86版
- 分布式温控系统,北邮软件工程作业
- 北邮高操期末试题答案及知识点总结
- 北邮2015-2016专硕概率论与随机过程期
- 7-Uath茶壶
- 信号与系统——北邮课件.pptx
- 北邮大二上计算机系统基础.rar
- 计算机图形学考试试卷试题6套含3套的
- 北邮软件工程-分布式温控系统
- 光纤通信PDF课件---北邮
- GPU精粹1-中文版.pdf《GPU精粹:实时图形
- 计算机图形学 基于3D图形开发技术
- 3D游戏与计算机图形学中的数学方法
- 虚拟现实技术文献英文
- 基于WinDLX的CPU流水线观察实验报告北
- 华南理工大学软件学院计算机图形学
- GPU+编程与CG+语言之阳春白雪下里巴人
- Hust图形学作业
评论
共有 条评论