资源简介
利用Opengl实现日地月模型,理解OpenGL中的变换过程,理解透视投影与平行投影的不同 ,了解深度测试,通过变换调整观察的位置与方向 ,加入光照模型
代码片段和文件信息
////////////////////////////////////////////////////////////////////////////
//实验要求:(1)理解OpenGL中的变换过程 //
// (2)理解透视投影与平行投影的不同 //
// (3)添加代码实现太阳、地球和月亮的运动模型 //
// (4)了解深度测试 //
// (5)通过变换调整观察的位置与方向 //
// (6)加入光照模型 //
////////////////////////////////////////////////////////////////////////////
#include
#include
#include
#include
#include
static GLfloat xRot = 0.0f;
static GLfloat zRot = 0.0f;
static GLfloat xTra = 0.0f;
static GLfloat yTra = 0.0f;
static GLfloat zTra = 0.0f;
void Initial()
{
glEnable(GL_DEPTH_TEST); // 启用深度测试
glFrontFace(GL_CCW);// 指定逆时针绕法表示多边形正面
//设置光源的参数
GLfloat light0_diffuse[]={1.0f1.0f1.0f1.0f};
GLfloat light1_diffuse[]={0.0f1.0f1.0f1.0f};
GLfloat light0_ambient[]={0.0f0.5f0.5f1.0f};
GLfloat light1_ambient[]={1.0f0.66f0.0f1.0f};
glLightfv(GL_LIGHT0GL_DIFFUSElight0_diffuse);
glLightfv(GL_LIGHT0GL_AMBIENTlight0_ambient);
glLightfv(GL_LIGHT1GL_AMBIENTlight1_ambient);
glLightfv(GL_LIGHT1GL_DIFFUSElight1_diffuse);
//使光源有效
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
glClearColor(0.0f 0.0f 0.0f 1.0f ); //背景为黑色
}
void ChangeSize(int w int h)
{
if(h == 0) h = 1;
// 设置视区尺寸
glViewport(0 0 w h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// 设置修剪空间
GLfloat fAspect;
fAspect = (float)w/(float)h;
gluPerspective(60.0 fAspect 1.0 500.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void RenderScene(void)
{
// 太阳旋转的角度
static float fElect1 = 0.0f;
//绕太阳旋转的角度
static float fElect2 = 0.0f;
//绕地球旋转的角度
static float fElect3 = 0.0f;
//双缓存和深度测试
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//设置光照
GLfloat light0_position[] = { 0.0f 0.0f 0.0f 1.0f };
GLfloat light1_position[] = { 0.0f 0.0f 1.0f 0.0f };
glLightfv (GL_LIGHT0 GL_POSITION light0_position);
glLightfv (GL_LIGHT1 GL_POSITION light1_position);
// 重置模型视图矩阵
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//将图形沿z轴负向移动
glTranslatef(0.0f 0.0f -250.0f);
- 上一篇:计算机图形学消隐实验转
- 下一篇:rs编码c语言实现
相关资源
- 安卓c语言开发SDL2+opengles
- 交互式计算机图形学 第六版 OpenGL源代
- VC++基于OpenGL模拟的一个3维空间模型
- opengl绘制汽车.cpp
- opengl实现水流效果sph
- opengl源代码,全是精华!
- OpenGL迷宫山东大学图形学实验三
- opengl的立方体消隐算法
- vc++ opengl代码爆炸
- 我见过最漂亮的CS仿真程序openGL和C+
- 广东某工业大学的openGL课程设计
- 使用OpenGL实现多个小球在密闭空间内
- 利用openGL和C++实现光线跟踪绘图的完
- OpenGl C++太阳系小行星运行系统 可切换
- vc++和OpenGL实现三维地形实时动态显示
- C++实现利用OpenGL实现三维绘图
- 太阳、地球、月亮之间的运动图Open
- MFC 单文档 实现opengl 三维旋转 缩放
- OPENGL的烟花程序(代码)
- MFC+OpenGL三维建模与动画显示
- 基于opengl粒子系统实现喷泉的模拟
- 一个基于openGL的太阳系模型,太阳地
- vc6.0+opengl纯色五角星填充
- vc6.0+opengl动态绘制五角星
- NeHe_OpenGL教程完整版 里面有地址可以
- OpenGL简单——实现立方体贴上不同纹
- MFC实现dem的读取与现实
- VC++ OpenGL三维地形漫游
- OpenGL实现三维地形实时动态显示
- VC++中Opengl实现建筑物虚拟漫游
评论
共有 条评论