• 大小: 25.43MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-16
  • 语言: 其他
  • 标签: 太阳系  

资源简介

借鉴他人源码,经过改进后,实现太阳系的全部行星显示,均有纹理、光照等,实现各大行星的公转及自转,分别以a,d控制旋转,具体内容详见代码

资源截图

代码片段和文件信息

#include 				// windows的头文件
#include      // Glut的头文件
#include “Texture.h“ // 纹理导入的头文件
#include      // 标准输入输出头文件
#include  // OLE控制库头文件
#include  // 数学函数头文件
#include  // OpenGL32库的头文件

#define MAXTEXTURE 100                                     // 定义最大的纹理数目

BOOL BuildTexture(char *szPathName GLuint &texid) // 载入图片并转换为纹理
{
HDC hdcTemp; // DC用来保存位图
HBITMAP hbmpTemp; // 保存临时位图
IPicture *pPicture; // 定义IPicture Interface
OLECHAR wszPath[MAX_PATH+1]; // 图片的完全路径
char szPath[MAX_PATH+1]; // 图片的完全路径
long lWidth; // 单位宽度
long lHeight; // 单位高度
long lWidthPixels; // 像素的宽度
long lHeightPixels; // 像素的高度
GLint glMaxTexDim ; // 保存纹理的最大尺寸

if (strstr(szPathName “http://“)) // 如果路径包含 http:// 则...
{
strcpy(szPath szPathName); // 把路径拷贝到 szPath
}
else // 否则从文件导入图片
{
GetCurrentDirectory(MAX_PATH szPath); // 取得当前路径
strcat(szPath “\\“); // 添加字符“\\“
strcat(szPath szPathName); // 添加图片的相对路径
}

MultiByteToWideChar(CP_ACP 0 szPath -1 wszPath MAX_PATH); // 把ASCII码转化为Unicode标准码
HRESULT hr = OleLoadPicturePath(wszPath 0 0 0 IID_IPicture (void**)&pPicture);

if(FAILED(hr)) // 如果导入失败
{
// 图片载入失败出错信息
MessageBox (HWND_DESKTOP “图片导入失败!\n(TextureLoad Failed!)“ “Error“ MB_OK | MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}

hdcTemp = CreateCompatibleDC(GetDC(0)); // 建立窗口设备描述表
if(!hdcTemp) // 建立失败?
{
pPicture->Release(); // 释放IPicture
// 图片载入失败出错信息
MessageBox (HWND_DESKTOP “图片导入失败!\n(TextureLoad Failed!)“ “Error“ MB_OK | MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}

glGetIntegerv(GL_MAX_TEXTURE_SIZE &glMaxTexDim); // 取得支持的纹理最大尺寸

pPicture->get_Width(&lWidth); // 取得IPicture 宽度 (转换为Pixels格式)
lWidthPixels = MulDiv(lWidth GetDeviceCaps(hdcTemp LOGPIXELSX) 2540);
pPicture->get_Height(&lHeight); // 取得IPicture 高度 (转换为Pixels格式)
lHeightPixels = MulDiv(lHeight GetDeviceCaps(hdcTemp LOGPIXELSY) 2540);

// 调整图片到最好的效果
if (lWidthPixels <= glMaxTexDim) // 图片宽度是否超过显卡最大支持尺寸
lWidthPixels = 1 << (int)floor((log((double)lWidthPixels)/log(2.0f)) + 0.5f); 
else // 否则将图片宽度设为显卡最大支持尺寸
lWidthPixels = glMaxTexDim;
 
if (lHeightPixels <= glMaxTexDim) // 图片高度是否超过显卡最大支持尺寸
lHeightPixels = 1 << (int)floor((log((double)lHeightPixels)/log(2.0f)) + 0.5f);
else // 否则将图片高度设为显卡最大支持尺寸
lHeightPixels = glMaxTexDim;

// 建立一个临时位图
BITMAPINFO bi = {0}; // 位图的类型
DWORD *pBits = 0; // 指向位图Bits的指针

bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); // 设置结构大小
bi.bmiHeader.biBitCount = 32; // 32 位
bi.bmiHeader.biWidth = lWidthPixels;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-11-13 19:18  太阳系\
     目录           0  2015-10-30 12:44  太阳系\Data\
     文件      221814  2015-10-26 16:14  太阳系\Data\光圈.bmp
     文件     1572918  2015-10-25 16:54  太阳系\Data\土星.bmp
     文件     8640054  2015-10-22 20:13  太阳系\Data\地球.bmp
     文件     2359350  2015-10-22 20:16  太阳系\Data\天王星.bmp
     文件      588166  2015-10-22 20:15  太阳系\Data\太阳.bmp
     文件       66616  2004-07-29 19:07  太阳系\Data\太阳光.bmp
     文件      966654  2015-10-25 13:18  太阳系\Data\星空.bmp
     文件       12344  2007-04-28 11:28  太阳系\Data\月球.bmp
     文件      435054  2015-10-25 16:54  太阳系\Data\木星.bmp
     文件      567294  2015-10-22 20:16  太阳系\Data\水星.bmp
     文件      460854  2015-10-26 16:25  太阳系\Data\流星1.bmp
     文件      202554  2015-10-26 16:25  太阳系\Data\流星2.bmp
     文件     1314054  2015-10-22 20:15  太阳系\Data\海王星.bmp
     文件      734670  2015-10-22 20:15  太阳系\Data\火星.bmp
     文件       49208  2007-04-28 10:10  太阳系\Data\金星.bmp
     目录           0  2015-11-13 19:15  太阳系\Debug\
     文件       43765  2015-10-25 14:48  太阳系\Debug\a.obj
     文件        6102  2015-11-08 22:56  太阳系\Debug\cl.command.1.tlog
     文件      130932  2015-11-08 22:56  太阳系\Debug\CL.read.1.tlog
     文件        2870  2015-11-08 22:56  太阳系\Debug\CL.write.1.tlog
     文件      237568  2007-04-29 14:35  太阳系\Debug\glut32.dll
     文件           2  2015-11-08 22:56  太阳系\Debug\link-cvtres.read.1.tlog
     文件           2  2015-11-08 22:56  太阳系\Debug\link-cvtres.write.1.tlog
     文件           2  2015-11-08 22:56  太阳系\Debug\link.13520-cvtres.read.1.tlog
     文件           2  2015-11-08 22:56  太阳系\Debug\link.13520-cvtres.write.1.tlog
     文件           2  2015-11-08 22:56  太阳系\Debug\link.13520.read.1.tlog
     文件           2  2015-11-08 22:56  太阳系\Debug\link.13520.write.1.tlog
     文件           2  2015-11-08 22:56  太阳系\Debug\link.14700-cvtres.read.1.tlog
     文件           2  2015-11-08 22:56  太阳系\Debug\link.14700-cvtres.write.1.tlog
............此处省略69个文件信息

评论

共有 条评论