資源簡介
使用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?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.xm
?????文件???????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個文件信息
評論
共有 條評論