资源简介
这是一个基于openGL的C++太阳系模型。其中太阳、地球 、月球均带有纹理,同时实现了光照的效果,是整个模型具有了立体效果。希望这个对大家有所帮助。
代码片段和文件信息
#include “LoadBMP.h“
void myinit(void)
{
glClearColor (0.0 0.0 0.0 0.0);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D); //启用二维纹理
GLfloat mat_shininess[] = { 10.0 };
GLfloat light_position[] = { 0.0 0.0 1.0 0.0 };
GLfloat white_light[] = {1.0 1.0 1.0 1.0};//光源设置
GLfloat lmodel_ambient[] = {0.2 0.2 0.2 1.0};
glShadeModel(GL_SMOOTH);
glMaterialfv(GL_FRONT GL_SHININESS mat_shininess);
glLightfv(GL_LIGHT0 GL_POSITION light_position);//0号光源的位置
glLightfv(GL_LIGHT0 GL_DIFFUSE white_light);
glLightfv(GL_LIGHT0 GL_SPECULAR white_light);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT lmodel_ambient);//使用lmodel_ambien
LoadAllTextures(); //调入纹理
}
void myidle()
{
day+=angle;
glutPostRedisplay();
}
void mymouse(int buttonint stateint xint y)
{
if(state==GLUT_DOWN && button==GLUT_LEFT_BUTTON){
if(first)
{
glutIdleFunc(myidle);
first=!first;
}
else
{
glutIdleFunc(0);
first=!first;
}
}
}
void mykeyboard(unsigned char key int x int y)
{
if (key == 27)
exit(0);
}
void mydisplay(void)
{
GLfloat whiteLight[] = { 0.2f 0.2f 0.2f 1.0f };
GLfloat lightPos[] = { 0.0f 0.0f 0.0f 2.0f };
year=day/365;
month=day/30;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
GLfloat mat_ambient1[] = {1001};
GLfloat mat_emission[] = {1110};
GLfloat mat_ambient2[] = {0.40.40.81};
GLfloat no_emission[] = {0001};
glPushMatrix();
glBindTexture(GL_TEXTURE_2Dsun->texID);
glRotatef (month 0.0 1.0 0.0); //太阳自转
glMaterialfv(GL_FRONT GL_AMBIENT mat_ambient1);
glMaterialfv(GL_FRONT GL_EMISSION mat_emission);
glRotatef (90 -1 0 0);
glDisable(GL_LIGHTING);
gltDrawSphere(1.0 60 40); //绘制太阳
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0GL_POSITIONlightPos);
glPopMatrix();
glPushMatrix();
glRotatef (year 0.0 1.0 0.0); //月亮与地球一起绕太阳转(地球公转)
glPushMatrix();
glBindTexture(GL_TEXTURE_2Dearth->texID);
glTranslatef (3.0 0.0 0.0);
glRotatef (month 0.0 1.0 0.0); //地球自转
glMaterialfv(GL_FRONT GL_AMBIENT mat_ambient2);
glMaterialfv(GL_FRONT GL_EMISSION no_emission);
glRotatef (90 -1 0 0);
gltDrawSphere(0.4 40 40); //绘制地球
glPopMatrix();
glPushMatrix();
glBindTexture(GL_TEXTURE_2Dmoon->texID);
glTranslatef (3.0 0.0 0.0);
glRotatef (60 -1 1 0);
glRotatef (month 0 1.0 0); //月球绕地球转
glTranslatef (0.6 0.0 0.0);
glRotatef (90 -1 0 0);
gltDrawSphere(0.07 20 20); //绘制月球
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
void myreshape (int w int h)
{
glViewport (0 0 (GLsizei) w (GLsizei) h); //指定视口大小
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(60.0 (GLfloat) w/(GLfloat) h 1 20); //透视投影
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluL
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3145784 2009-08-26 17:18 太阳系模型\Debug\earth.bmp
文件 786488 2009-08-26 17:13 太阳系模型\Debug\moon.bmp
文件 2016256 2012-06-09 11:05 太阳系模型\Debug\solar.bsc
文件 217176 2012-06-20 17:34 太阳系模型\Debug\solar.exe
文件 262756 2012-06-20 17:34 太阳系模型\Debug\solar.ilk
文件 30899 2012-06-20 17:34 太阳系模型\Debug\solar.obj
文件 3705708 2012-06-20 17:27 太阳系模型\Debug\solar.pch
文件 459776 2012-06-20 17:34 太阳系模型\Debug\solar.pdb
文件 0 2012-06-09 11:05 太阳系模型\Debug\solar.sbr
文件 172856 2007-08-18 01:29 太阳系模型\Debug\sun.bmp
文件 328704 2012-06-20 17:35 太阳系模型\Debug\vc60.idb
文件 77824 2012-06-20 17:34 太阳系模型\Debug\vc60.pdb
文件 217181 2012-03-19 21:16 太阳系模型\Debug\太阳系模型.exe
文件 259856 2012-03-19 21:16 太阳系模型\Debug\太阳系模型.ilk
文件 3709072 2012-03-19 20:53 太阳系模型\Debug\太阳系模型.pch
文件 418816 2012-03-19 21:16 太阳系模型\Debug\太阳系模型.pdb
文件 3145784 2009-08-26 17:18 太阳系模型\earth.bmp
文件 1386496 2001-08-29 17:14 太阳系模型\glaux.dll
文件 237568 2001-11-08 02:27 太阳系模型\glut32.dll
文件 5489 2012-03-19 20:53 太阳系模型\LoadBMP.h
文件 786488 2009-08-26 17:13 太阳系模型\moon.bmp
文件 3573 2012-06-20 17:34 太阳系模型\solar.cpp
文件 3389 2012-06-20 17:35 太阳系模型\solar.dsp
文件 518 2012-06-20 17:36 太阳系模型\solar.dsw
文件 41984 2012-06-20 17:36 太阳系模型\solar.ncb
文件 48640 2012-06-20 17:36 太阳系模型\solar.opt
文件 244 2012-06-20 17:35 太阳系模型\solar.plg
文件 172856 2007-08-18 01:29 太阳系模型\sun.bmp
文件 4389 2012-03-19 20:31 太阳系模型\太阳系模型.dsp
文件 545 2012-03-19 20:21 太阳系模型\太阳系模型.dsw
............此处省略8个文件信息
相关资源
- c++基于OpenGL的游戏源代码
- 计算机图形学基于opengl图形变换源代
- 基于OpenGL的3D射击游戏的设计与实现
- 基于OpenGL的DEM显示
- 用opengl和VC++实现的地球仪
- OBJ 模型文件读取显示 基于OpenGL MFC界
- OpenGL计算机图形学2D太阳系模型
- graphics.h C语言图形学,画星星,画月
- 模拟卫星旋转和地球自转
- C语言动画设计卫星环绕地球初学者
- 地球仪纹理型纹理贴图 C++代码
- 基于openGl的画直线和三角形光栅化源
- 基于OPENGL的C语言大作业
- 地球绕着太阳转,月亮绕着地球转
- 基于OpenGL的音乐可视化、频谱图
- opengl实现对地球纹理贴图
- 基于OpenGL的DDA算法画直线段
- 基于OPENGL透视图显示三视图投影变换
- stm32 + gprs + gps +googleearth + vc6.0 + 数据
- 基于OpenGl的Bezier曲面的简洁实现
评论
共有 条评论