資源簡介
用的是vs2010,由于資源原因,只給出原文件。如不會使用vs做C++的下載包中有詳細步驟。前提是電腦要配置opengl環境

代碼片段和文件信息
#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
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-04-25?11:40??新建文件夾\
?????文件?????3145784??2009-08-26?17:18??新建文件夾\earth.bmp
?????文件????????5489??2012-03-19?20:53??新建文件夾\LoadBMP.h
?????文件??????786488??2009-08-26?17:13??新建文件夾\moon.bmp
?????文件??????151040??2013-04-25?11:40??新建文件夾\readme.doc
?????文件????????3573??2012-06-20?17:34??新建文件夾\solar.cpp
?????文件??????172856??2007-08-18?01:29??新建文件夾\sun.bmp
- 上一篇:C++入門經典 第四版
- 下一篇:qt與html通信
評論
共有 條評論