资源简介
解释一下标题:复合空间变换指地球围绕太阳转,而月球围绕地球转的复合变换。纹理贴图指如何把平面图片贴入到空间实体上。本代码结构简单,代码量少,适合新手快速学习原理,以及上手。
如果出现编译后纹理无法加载,请将代码包内的图片纹理文件夹拷贝至程序同一目录。
代码片段和文件信息
#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);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 393270 2004-07-29 19:07 planet\Data\1.bmp
文件 152806 1998-08-21 02:47 planet\Data\2.bmp
文件 66616 2004-07-29 19:07 planet\Data\3.bmp
文件 12344 2007-04-28 11:28 planet\Data\4.bmp
文件 49208 2007-04-28 10:12 planet\Data\5.bmp
文件 49208 2007-04-28 10:10 planet\Data\6.bmp
文件 66616 2007-04-28 10:11 planet\Data\7.bmp
文件 49208 2007-04-28 10:10 planet\Data\8.bmp
文件 213092 2008-07-08 16:11 planet\Data\shiyan4.exe
..A.SH. 115712 2007-04-28 11:34 planet\Data\Thumbs.db
目录 0 2008-10-07 14:53 planet\Data
文件 10169 2008-10-01 12:00 planet\main.cpp
文件 399 2007-04-28 11:36 planet\resource.h
文件 4173 2008-07-04 23:07 planet\shiyan4.dsp
文件 522 2008-07-04 22:56 planet\shiyan4.dsw
文件 209008 2008-10-01 12:00 planet\shiyan4.exe
文件 66560 2008-10-02 14:47 planet\shiyan4.ncb
文件 48640 2008-10-02 14:47 planet\shiyan4.opt
文件 1315 2008-10-01 12:00 planet\shiyan4.plg
文件 8981 2007-04-28 11:36 planet\Texture.cpp
文件 507 2007-04-28 11:36 planet\Texture.h
文件 32768 2008-10-07 14:55 planet\简易太阳系.doc
目录 0 2008-10-07 14:56 planet
----------- --------- ---------- ----- ----
1551122 23
- 上一篇:如何获取iOS设备的UUID
- 下一篇:改进的denaulay三角网渐次插入生成算法
相关资源
- STK VC 连接程序
- DSP课程设计--基于TM320VC5402语音采集压
- 基于waveIn API的录音器
- vc定时器和多线程的简单应用
- Windows下VC实现的类似Netstat命令查看端
- VCS_labs.rar
- VMware vCenter Converter 指导手册
- Spring Web MVC外文翻译
- 小蓝VC传奇3逆向研究三部曲.txt
- spring ioc+mvc代码
- DLT645抄表原码(VC)
- 《数据结构及算法经典》源代码.
- 3D图像算法从入门到进阶包含C实现
- spring+springMvc简单实现SSO单点登录
- 毕设 外文文献翻译--Spring的web-MVC-构架
- 拓扑排序输出所有可能的拓扑排序
- 视频水印嵌入算法源程序VC实现,对话
- connect-1.104-win32-msvc.zip
- 尚硅谷佟刚老师SpringMVC视频教程百度
- VC GDI+ 窗口截图内存BMP转JPG压缩、JP
- SpringMVC+Shiro+MongoDB+BootStrap基础框架
- VMware vCenter 6.0注册机绿色版
- 改变树控件背景颜色的VC源代码
- VVC中CU划分结果显示
- VC 绘图库VCGraph-V20091123
- VC工程重命名工具 VC Project Rename
- 利用MVC(SpringMVC+Spring+MyBatis)实现购
- VCLZipPro v4.51.1.zip
- Dell_SLIC工厂模式工具SVCTAG
- vsphere vcenter+esxi key(6.0和6.5)
评论
共有 条评论