资源简介
利用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语言实现
相关资源
- OpenGL+MFC显示三维点云中每一个点的法
- 用openglMFC实现的魔方
- 计算机图形学,实现茶壶旋转,颜色
- opengl的菜单操作
- MFC+OPENGL实现3D茶壶的旋转、平移
- opengl实现对地球纹理贴图
- 计算机图形学作业原创C/C++ VC++6.0,
- 基于OpenGL的DDA算法画直线段
- 基于OPENGL透视图显示三视图投影变换
- Qt5 C++ GUI Programming Cookbook 电子书和源
- OpenGL绘制三维坐标图
- OpenGL绘制三维地形(MFC)
- OpenGL_NURBS闭曲线_圆.rar
- OpenGL编程.rar
- opengl 填充图元 扫描线算法
- opengl:基于linux下雷达ppi
- opengl编程开发基础
- OpenGL教室纹理映射贴图
- opengl移动的小车
- opengl人物设计大头儿子
- opengl人物设计博士脸
- opengl调试
- QT+OPENGL开发
- 掌握利用OpenGL函数进行鼠标、键盘操
- 利用OpenGL函数画一个三维物体实现在
- 三维几何零件图形程序-OpenGL-VC++源代
- 《OpenGL着色语言》pdf
- OpenGL2 GIS
- OpenGL填充等值线MFC源代码
- opengl摩天轮
评论
共有 条评论