资源简介

使用opengl绘制太阳、地球、月球。1. 可以用鼠标左键拖拽,用鼠标滚轮缩放。2. 实现了太阳光线照射地球和月球。 3. 添加有纹理。

资源截图

代码片段和文件信息

#include “loadBMP.h“

texture * sun *earth *moon; //纹理指针

unsigned char * LoadBmpFile(char * filename BITMAPINFOHEADER * bmpInfoHeader) {

FILE * file;
BITMAPFILEHEADER bmpFileHeader;
unsigned char * image;
unsigned int imageIdx = 0;
unsigned char tempRGB;

fopen_s(&file filename “rb“);
if (file == NULL)
return 0;

fread(&bmpFileHeader sizeof(BITMAPFILEHEADER) 1 file); // 读取 BMP 文件头

if (bmpFileHeader.bfType != BITMAP_ID) // 验证是否是一个 BMP 文件
{
fclose(file);
return 0;
}

fread(bmpInfoHeader sizeof(BITMAPINFOHEADER) 1 file); // 读位图信息头
fseek(file bmpFileHeader.bfOffBits SEEK_SET); // 将文件指针移到位图数据的开始处
image = (unsigned char *)malloc(bmpInfoHeader->biSizeImage); // 分配内存给位图数据

if (!image)
{
free(image);
fclose(file);
return 0;
}


fread(image 1 bmpInfoHeader->biSizeImage file); // 读取位图数据

if (image == NULL)
{
fclose(file);
return 0;
}

// 反转 R 和 B 值以得到 RGB,因为位图颜色格式是 BGR
for (imageIdx = 0; imageIdx < bmpInfoHeader->biSizeImage; imageIdx += 3)
{
tempRGB = image[imageIdx];
image[imageIdx] = image[imageIdx + 2];
image[imageIdx + 2] = tempRGB;
}

fclose(file);
return image;
}

texture * LoadTexFile(char * filename) {
BITMAPINFOHEADER texInfo;
texture * thisTexture;

thisTexture = (texture *)malloc(sizeof(texture));
if (thisTexture == NULL)
return 0;

thisTexture->data = LoadBmpFile(filename &texInfo); // 调入纹理数据并检查有效性
if (thisTexture->data == NULL)
{
free(thisTexture);
return 0;
}

thisTexture->width = texInfo.biWidth; // 设置纹理的宽和高
thisTexture->height = texInfo.biHeight;

glGenTextures(1 &thisTexture->texID); // 生成纹理对象名

return thisTexture;
}

BOOL LoadAllTextures() {

sun = LoadTexFile(“sun.bmp“);
if (sun == NULL)
return FALSE;

glBindTexture(GL_TEXTURE_2D sun->texID);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_WRAP_T GL_REPEAT);
gluBuild2DMipmaps(GL_TEXTURE_2D GL_RGBA sun->width sun->height GL_RGB GL_UNSIGNED_BYTE sun->data);


earth = LoadTexFile(“earth.bmp“);
if (earth == NULL)
return FALSE;

glBindTexture(GL_TEXTURE_2D earth->texID);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_WRAP_T GL_REPEAT);
gluBuild2DMipmaps(GL_TEXTURE_2D GL_RGBA earth->width earth->height GL_RGB GL_UNSIGNED_BYTE earth->data);


moon = LoadTexFile(“moon.bmp“);
if (moon == NULL)
return FALSE;

glBindTexture(GL_TEXTURE_2D moon->texID);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MIN_FIL

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     44544  2018-12-06 08:27  work\.vs\work\v14\.suo

     文件     218624  2015-10-14 09:58  work\Debug\freeglut.dll

     文件     337408  2015-10-14 09:58  work\Debug\glew32.dll

     文件     350720  2015-10-14 09:58  work\Debug\glewinfo.exe

     文件      43520  2015-10-14 09:58  work\Debug\glfw3.dll

     文件     222720  2015-10-14 09:58  work\Debug\visualinfo.exe

     文件     921600  2018-12-04 19:00  work\Debug\work.pdb

     文件       9468  2018-11-09 21:56  work\packages\nupengl.core.0.1.0.1\.signature.p7s

     文件        232  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\configurations.autopkg

     文件       1847  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\default-propertiesui.xml

     文件       7837  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\docs\license.txt

     文件        703  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GL\freeglut.h

     文件       9246  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GL\freeglut_ext.h

     文件      27148  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GL\freeglut_std.h

     文件     943450  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GL\glew.h

     文件        660  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GL\glut.h

     文件      70092  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GL\glxew.h

     文件      63627  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GL\wglew.h

     文件      82172  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GLFW\glfw3.h

     文件       5684  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\include\GLFW\glfw3native.h

     文件      36642  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\lib\Win32\freeglut.lib

     文件     562210  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\lib\Win32\glew32.lib

     文件      17748  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\lib\Win32\glfw3dll.lib

     文件      33672  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\lib\x64\freeglut.lib

     文件     553592  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\lib\x64\glew32.lib

     文件      17418  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\lib\x64\glfw3dll.lib

     文件       4857  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\native\nupengl.core.targets

     文件         73  2015-10-14 09:58  work\packages\nupengl.core.0.1.0.1\build\publisher-info.txt

     文件     352318  2018-12-04 17:33  work\packages\nupengl.core.0.1.0.1\nupengl.core.0.1.0.1.nupkg

     文件       9467  2018-11-09 13:32  work\packages\nupengl.core.redist.0.1.0.1\.signature.p7s

............此处省略105个文件信息

评论

共有 条评论