資源簡介
這是一個基于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個文件信息
評論
共有 條評論