资源简介
用的是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通信
相关资源
- C++入门经典 第四版
- 工程测量学自由设站程序设计
- 神思读卡器开发包
- MicrosoftC++BuildTools14.0
- C++ 消息中间件MQ4CPP最新版源码
- 遗传算法解八数码问题
- C++开发的OPENGL立方体,支持鼠标拖拽
- C++经典书籍集合6本书合集
- VC++打印程序Print
- GIS拓扑自动生成代码
- TCP协议客户服务器方式网络通信对话
- TeeChar8控件及其使用方法针对于VC++
- C++课程设计《日程管理系统》
- 课程设计源码.zip
- MFC函数库.rar
- 图解数据结构C++版源码
- QT c++ dijkstra最短路径工程源码
- 数据结构(C++语言版)_第三版_邓俊辉
- 数据结构与算法分析——C++语言描述
- 小世界网络编程VC++
- 酒店管理系统 QT/C++
- C/C++参考手册大全5本集合.chm
- c++网吧计费管理系统
- 飞行射击游戏源码c++
- 塔防游戏源码c++
- 飞机大战游戏代码c++
- VC++开发界面源码
- 图书管理系统用C++编写的图书管理系
- FTP多线程服务器源码
- 马尔可夫链的c++ C语言实现方法
评论
共有 条评论