資源簡介
是基于NeHe網上教程寫出來的完整代碼,大部分需要的資源都包含了,個別基本資源有缺的朋友就麻煩自行下載啦
代碼片段和文件信息
//======================================================================
/**
*??@file??????BMPLoader.cpp
*
*??項目描述:?碰撞檢測演示
*??文件描述:??載入位圖類?
*??適用平臺:?Windows98/2000/NT/XP
*??
*??作者:?????WWBOSS
*??電子郵件:??wwboss123@gmail.com
*??創建日期:?2006-11-23
*??修改日期:?2007-07-10
*
*/
//======================================================================
#include“BMPLoader.h“??????????????/**
/**?構造函數?*/
CBMPLoader::CBMPLoader()
{
???/**?初始化成員值為0?*/
image?=?0;
imageWidth?=?0;
imageHeight?=?0;
}
/**?析構函數?*/
CBMPLoader::~CBMPLoader()
{
???FreeImage();?/**}
/**?裝載一個位圖文件?*/
bool?CBMPLoader::LoadBitmap(const?char?*file)
{
FILE?*pFile?=?0;?/**
/**?創建位圖文件信息和位圖文件頭結構?*/
BITMAPINFOHEADER?bitmapInfoHeader;
BITMAPFILEHEADER?header;
??
unsigned?char?textureColors?=?0;/**
???/**?打開文件并檢查錯誤?*/
pFile?=?fopen(file?“rb“);
if(pFile?==?0)?return?false;
/**?讀入位圖文件頭信息?*/?
fread(&header?sizeof(BITMAPFILEHEADER)?1?pFile);
/**?檢查該文件是否為位圖文件?*/
if(header.bfType?!=?BITMAP_ID)
???{
???fclose(pFile);?????????????/** ???return?false;
???}
/**?讀入位圖文件信息?*/
fread(&bitmapInfoHeader?sizeof(BITMAPINFOHEADER)?1?pFile);
/**?保存圖像的寬度和高度?*/
imageWidth?=?bitmapInfoHeader.biWidth;
????imageHeight?=?bitmapInfoHeader.biHeight;
????/**?確保讀取數據的大小?*/
???if(bitmapInfoHeader.biSizeImage?==?0)
??????bitmapInfoHeader.biSizeImage?=?bitmapInfoHeader.biWidth?*
??????bitmapInfoHeader.biHeight?*?3;
/**?將指針移到數據開始位置?*/
fseek(pFile?header.bfOffBits?SEEK_SET);
/**?分配內存?*/
image?=?new?unsigned?char[bitmapInfoHeader.biSizeImage];
/**?檢查內存分配是否成功?*/
if(!image)????????????????????????/** ???{
???delete[]?image;
???fclose(pFile);
???return?false;
???}
/**?讀取圖像數據?*/
fread(image?1?bitmapInfoHeader.biSizeImage?pFile);
/**?將圖像顏色數據格式進行交換由BGR轉換為RGB?*/
for(int?index?=?0;?index?(int)bitmapInfoHeader.biSizeImage;?index+=3)
???{
???textureColors?=?image[index];
???image[index]?=?image[index?+?2];
???image[index?+?2]?=?textureColors;
???}
??
fclose(pFile);???????/** return?true;?????????/**}
/**?載入位圖文件,并創建紋理?*/
bool?CBMPLoader::Load(const?char*?fileName)
{
if(!LoadBitmap(fileName))
{
MessageBox(NULL“載入位圖文件失敗!““錯誤“MB_OK);
exit(0);
}
/**?生成紋理對象名稱?*/
glGenTextures(1?&ID);
???
????/**?創建紋理對象?*/
????glBindTexture(GL_TEXTURE_2D?ID);
/**?控制濾波?*/
glTexParameteri(GL_TEXTURE_2D?GL_TEXTURE_MIN_FILTER?GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D?GL_TEXTURE_MAG_FILTER?GL_LINEAR);
????glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_WRAP_SGL_REPEAT);
????glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_WRAP_TGL_REPEAT);
???
/**?創建紋理?*/
??? gluBuild2DMipmaps(GL_TEXTURE_2D?GL_RGB?imageWidth
??????????????????imageHeight?GL_RGB?GL_UNSIGNED_BYTE
??????????????????image);
???return?true;
}
/**?釋放內存?*/
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3441??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\BMPLoader.cpp
?????文件???????1128??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\BMPLoader.h
?????文件?????225280??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Collide.exe
?????文件?????756736??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Collide.ncb
?????文件???25907200??2015-04-04?20:23??OpenGL物理碰撞效果\Collide\Collide.sdf
?????文件????????875??2015-04-04?20:03??OpenGL物理碰撞效果\Collide\Collide.sln
?????文件????????903??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Collide.sln.old
????..A..H.?????17408??2015-04-04?20:23??OpenGL物理碰撞效果\Collide\Collide.suo
????..A..H.??????8192??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Collide.suo.old
?????文件???????4303??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Collide.vcproj
?????文件???????5897??2015-04-04?20:03??OpenGL物理碰撞效果\Collide\Collide.vcxproj
?????文件???????2466??2015-04-04?20:03??OpenGL物理碰撞效果\Collide\Collide.vcxproj.filters
?????文件????????143??2015-04-04?20:03??OpenGL物理碰撞效果\Collide\Collide.vcxproj.user
?????文件??????21573??2015-04-04?20:12??OpenGL物理碰撞效果\Collide\CollideDemo.cpp
?????文件???????3495??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\CollideDemo.h
?????文件??????49206??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Data\Boden.bmp
?????文件??????49206??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Data\Marble.bmp
?????文件??????12342??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Data\Spark.bmp
?????文件??????49206??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Data\Wand.bmp
?????文件??????32351??2015-04-04?20:08??OpenGL物理碰撞效果\Collide\Debug\BMPLoader.obj
?????文件???????2649??2007-11-13?11:04??OpenGL物理碰撞效果\Collide\Debug\BuildLog.htm
?????文件???????5678??2015-04-04?20:21??OpenGL物理碰撞效果\Collide\Debug\cl.command.1.tlog
?????文件?????106918??2015-04-04?20:21??OpenGL物理碰撞效果\Collide\Debug\CL.read.1.tlog
?????文件???????4810??2015-04-04?20:21??OpenGL物理碰撞效果\Collide\Debug\CL.write.1.tlog
?????文件?????558592??2015-04-04?20:21??OpenGL物理碰撞效果\Collide\Debug\Collide.exe
?????文件????????406??2015-04-04?20:11??OpenGL物理碰撞效果\Collide\Debug\Collide.exe.em
?????文件????????472??2015-04-04?20:11??OpenGL物理碰撞效果\Collide\Debug\Collide.exe.em
?????文件????????381??2015-04-04?20:21??OpenGL物理碰撞效果\Collide\Debug\Collide.exe.intermediate.manifest
?????文件????1488004??2015-04-04?20:21??OpenGL物理碰撞效果\Collide\Debug\Collide.ilk
?????文件?????????92??2015-04-04?20:21??OpenGL物理碰撞效果\Collide\Debug\Collide.lastbuildstate
............此處省略62個文件信息
評論
共有 條評論