资源简介
使用opengl模拟太阳系内行星自转与公转的三维场景
代码片段和文件信息
#include // windows的头文件
#include // Glut的头文件
#include “Texture.h“ // 纹理导入的头文件
#define MAXTEXTURE 4 // 定义最大的纹理数目
// 定义窗口的标题、宽度、高度
#define WIN_title “探索太空--太阳系五大行星“
const int WIN_WIDTH = 800;
const int WIN_HEIGHT = 500;
BOOL isFullScreen = FALSE;
// 用户变量定义
GLfloat ep_Angle; // 地球公转的角度
GLfloat es_Angle; // 地球自转的角度
GLfloat mp_Angle; // 月亮公转的角度
GLfloat ms_Angle; // 月亮自转的角度
GLuint texture[MAXTEXTURE]; // 纹理数组,保存纹理名字
GLUquadricObj *quadric; // 建立二次曲面对象
GLfloat angle_Z; // 星空旋转角度
GLfloat LightAmbient[] = { 1.0f 1.0f 1.0f 0.0f }; // 定义环境光的颜色
GLfloat LightDiffuse[] = { 1.0f 1.0f 1.0f 0.0f }; // 定义漫反射光的颜色
GLfloat LightPosition[] = { 0.0f 0.0f 0.0f 1.0f }; // 定义光源的位置
// OpenGL初始化
void InitGL(void)
{
glClearColor(0.0f 0.0f 0.0f 0.5f);
glClearDepth(2.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glShadeModel(GL_SMOOTH);
glEnable(GL_CULL_FACE);
glHint(GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST);
// 载入纹理
BuildTexture(“Data/1.bmp“ texture[0]);
BuildTexture(“Data/2.bmp“ texture[1]);
BuildTexture(“Data/3.bmp“ texture[2]);
BuildTexture(“Data/4.bmp“ texture[3]);
BuildTexture(“Data/5.bmp“ texture[4]);
BuildTexture(“Data/6.bmp“ texture[5]);
BuildTexture(“Data/7.bmp“ texture[6]);
BuildTexture(“Data/8.bmp“ texture[7]);
glEnable(GL_TEXTURE_2D); // 开启2D纹理映射
glLightfv(GL_LIGHT1 GL_AMBIENT LightAmbient); // 设置环境光
glLightfv(GL_LIGHT1 GL_DIFFUSE LightDiffuse); // 设置漫反射光
quadric = gluNewQuadric(); // 建立一个曲面对象指针
gluQuadricTexture(quadric GLU_TRUE); // 建立纹理坐标
gluQuadricDrawstyle(quadric GLU_FILL); // 用面填充
glEnable(GL_LIGHTING); // 打开光照
glEnable(GL_LIGHT1); // 打开光源1
}
// 场景绘制函数
void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f 0.0f -5.0f); // 将坐标系移入屏幕8.0f
glRotatef(10 1.0f 0.0f 0.0f); // 将坐标系绕x轴旋转10度
glEnable(GL_LIGHT0); // 打开光源0
/**********************************绘制背景星空*********************************************/
glPushMatrix (); // 当前模型矩阵入栈
glTranslatef(-10.0f 3.0f 0.0f);
glRotatef (angle_Z 0.0f 0.0f 1.0f);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D texture[1]); // 绑定星空纹理
glBegin(GL_QUADS);
glNormal3f( 0.0f 0.0f 1.0f);
glTexCoord2f(0.0f 0.0f); glVertex3f(-20.0f -20.0f -5.0f);
glTexCoord2f(6.0f 0.0f); glVertex3f( 20.0f -20.0f -5.0f);
glTexCoord2f(6.0f 6.0f); glVertex3f( 20.0f 20.0f -5.0f);
glTexCoord2f(0.0f 6.0f); glVertex3f(-20.0f 20.0f -5.0f);
glEnd();
glPopMatrix (); // 当前模型矩阵出栈
/**********************************绘制太阳*************************************************/
glBindTexture(GL_TEXTURE_2D texture[2]); // 绑定纹理
glEnable(GL_BLEND)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10121 2007-04-29 23:19 salary\a.cpp
文件 393270 2004-07-29 19:07 salary\Data\1.bmp
文件 152806 1998-08-21 02:47 salary\Data\2.bmp
文件 66616 2004-07-29 19:07 salary\Data\3.bmp
文件 12344 2007-04-28 11:28 salary\Data\4.bmp
文件 49208 2007-04-28 10:12 salary\Data\5.bmp
文件 49208 2007-04-28 10:10 salary\Data\6.bmp
文件 66616 2007-04-28 10:11 salary\Data\7.bmp
文件 49208 2007-04-28 10:10 salary\Data\8.bmp
..A.SH. 115712 2007-04-28 11:34 salary\Data\Thumbs.db
....... 237568 2007-04-29 14:35 salary\glut32.dll
文件 399 2007-04-28 11:36 salary\resource.h
文件 4468 2007-04-29 23:19 salary\salary.dsp
文件 537 2007-04-29 23:03 salary\salary.dsw
文件 208959 2007-04-29 23:19 salary\salary.exe
文件 41984 2007-05-20 09:22 salary\salary.ncb
文件 53760 2007-05-20 09:22 salary\salary.opt
文件 8981 2007-04-28 11:36 salary\Texture.cpp
文件 507 2007-04-28 11:36 salary\Texture.h
目录 0 2007-05-23 20:02 salary\Data
目录 0 2007-05-23 20:02 salary\Debug
目录 0 2007-05-23 20:09 salary
----------- --------- ---------- ----- ----
1522272 22
- 上一篇:ios 卡路里 计步
- 下一篇:分布式散列表DHT的原理
相关资源
- 读取DXF文件并在OpenGL中显示.
- 用VC opengl 绘制的一个房屋轮廓
- opengl类库大全glaux.lib;glu.lib;glu32.lib;
- OpenGL实现的3D魔方
- OPenGL中绘制茶杯模型
- 刚学的OpenGL画五角星
- Qt自定义继承QOpenGLWidget的类进行绘图
- 读取obj文件含顶点法线,2013编译通过
- OpenGL画树的代码
- OpenGL开发的机械臂运动仿真程序
- Phong光照及在GLSL中使用函数
- 现代OpenGL+Qt:绘制可旋转、带光照效
- 现代OpenGL+Qt学习笔记之四:使用Unif
- 现代OpenGL+Qt学习笔记之三:显示一个
- 现代OpenGL+Qt学习笔记之二:程序框架
- OpenGL显示汉字
- openGL超级全的库,有GL.h、GLAUX.h/lib、
- 带纹理的茶壶
- glut搭建glut32bit和64bit
- opengl实现的光线跟踪算法2
- UG NX 与 Opengl联合编程
- OpenGL shader 代码,可正常编译,完美
- opengl太阳系系统有贴图
- opengl 一个有光照效果带纹理会旋转的
- opengl系统开发案例代码 Chapter15
- glm.cpp、glm.h用于opengl读取obj文件
- OPENGL可一走动的人
- opengl实现多边形绘制删除和移动 有保
- OpenGL实现3DS文件中的模型自由旋转
- opengl画球,递归细分
评论
共有 条评论