資源簡介
基于OpenGL的3D迷宮漫游程序,包括模型加載、紋理映射、碰撞處理、攝像漫游等,帶詳細按鍵說明和文檔

代碼片段和文件信息
#include?
#include?“CTargaImage.h“
CTargaImage::CTargaImage()?:?m_pImageData(NULL)
{
}
CTargaImage::~CTargaImage()
{
Release();
}
void?CTargaImage::SwapRedBlue()
{
switch?(m_colorDepth)
{
case?32:
{
unsigned?char?temp;
rgba_t*?source?=?(rgba_t*)m_pImageData;
for?(int?pixel?=?0;?pixel?(m_width?*?m_height);?++pixel)
{
temp?=?source[pixel].b;
source[pixel].b?=?source[pixel].r;
source[pixel].r?=?temp;
}
}?break;
case?24:
{
unsigned?char?temp;
rgb_t*?source?=?(rgb_t*)m_pImageData;
for?(int?pixel?=?0;?pixel?(m_width?*?m_height);?++pixel)
{
temp?=?source[pixel].b;
source[pixel].b?=?source[pixel].r;
source[pixel].r?=?temp;
}
}?break;
default:
//?ignore?other?color?depths
break;
}
}
bool?CTargaImage::Load(const?char?*filename)
{
FILE?*pFile?=?fopen(filename?“rb“);
if?(!pFile)
return?false;
tgaheader_t?tgaHeader;
//?read?the?TGA?header
fread(&tgaHeader?1?sizeof(tgaheader_t)?pFile);
//?see?if?the?image?type?is?one?that?we?support?(RGB?RGB?RLE?GRAYSCALE?GRAYSCALE?RLE)
if?(?((tgaHeader.imageTypeCode?!=?TGA_RGB)?&&?(tgaHeader.imageTypeCode?!=?TGA_GRAYSCALE)?&&?
?(tgaHeader.imageTypeCode?!=?TGA_RGB_RLE)?&&?(tgaHeader.imageTypeCode?!=?TGA_GRAYSCALE_RLE))?||
?tgaHeader.colorMapType?!=?0)
{
fclose(pFile);
return?false;
}
//?get?image?width?and?height
m_width?=?tgaHeader.width;
m_height?=?tgaHeader.height;
//?colormode?->?3?=?BGR?4?=?BGRA
int?colorMode?=?tgaHeader.bpp?/?8;
//?we?don‘t?handle?less?than?24?bit
if?(colorMode?3)
{
fclose(pFile);
return?false;
}
m_imageSize?=?m_width?*?m_height?*?colorMode;
//?allocate?memory?for?TGA?image?data
m_pImageData?=?new?unsigned?char[m_imageSize];
//?skip?past?the?id?if?there?is?one
if?(tgaHeader.idLength?>?0)
fseek(pFile?SEEK_CUR?tgaHeader.idLength);
//?read?image?data
if?(tgaHeader.imageTypeCode?==?TGA_RGB?||?tgaHeader.imageTypeCode?==?TGA_GRAYSCALE)
{
fread(m_pImageData?1?m_imageSize?pFile);
}
else?
{
//?this?is?an?RLE?compressed?image
unsigned?char?id;
unsigned?char?length;
rgba_t?color?=?{?0?0?0?0?};
unsigned?int?i?=?0;
while?(i? {
id?=?fgetc(pFile);
//?see?if?this?is?run?length?data
if?(id?>=?128)//?&?0x80)
{
//?find?the?run?length
length?=?(unsigned?char)(id?-?127);
//?next?3?(or?4)?bytes?are?the?repeated?values
color.b?=?(unsigned?char)fgetc(pFile);
color.g?=?(unsigned?char)fgetc(pFile);
color.r?=?(unsigned?char)fgetc(pFile);
if?(colorMode?==?4)
color.a?=?(unsigned?char)fgetc(pFile);
//?save?everything?in?this?run
while?(length?>?0)
{
m_pImageData[i++]?=?color.b;
m_pImageData[i++]?=?color.g;
m_pImageData[i++]?=?color.r;
if?(colorMode?==?4)
m_pImageData[i++]?=?color.a;
--length;
}
}
else
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1715200??2010-11-08?12:51??實驗報告\wendang.doc
?????文件???????7038??2004-02-09?20:23??源代碼\MYMAZE\CTargaImage.cpp
?????文件???????2241??2009-12-08?09:57??源代碼\MYMAZE\CTargaImage.h
?????文件?????197147??2004-02-09?20:29??源代碼\MYMAZE\data\map\Brick.tga
?????文件???????4225??2004-02-09?20:24??源代碼\MYMAZE\data\map\heightmap.raw
?????文件?????197147??2004-02-09?20:30??源代碼\MYMAZE\data\map\Marble.tga
?????文件?????194727??2004-02-09?07:38??源代碼\MYMAZE\data\map\water.tga
?????文件?????786476??2004-02-09?20:27??源代碼\MYMAZE\data\skybox\bk.tga
?????文件?????786971??2004-02-09?20:28??源代碼\MYMAZE\data\skybox\dn.tga
?????文件?????786476??2004-02-09?20:28??源代碼\MYMAZE\data\skybox\ft.tga
?????文件?????786476??2004-02-09?20:28??源代碼\MYMAZE\data\skybox\lt.tga
?????文件???????4585??2004-02-09?20:28??源代碼\MYMAZE\data\skybox\Morning?Dew.nfo
?????文件????????140??2004-02-09?20:28??源代碼\MYMAZE\data\skybox\readme.txt
?????文件?????786476??2004-02-09?20:29??源代碼\MYMAZE\data\skybox\rt.tga
?????文件?????786971??2004-02-09?20:29??源代碼\MYMAZE\data\skybox\up.tga
?????文件?????145357??2004-02-09?20:23??源代碼\MYMAZE\data\模型\centaur\Centaur.tga
?????文件?????246120??2004-02-09?20:23??源代碼\MYMAZE\data\模型\centaur\Tris.md2
?????文件??????33344??2008-03-30?19:06??源代碼\MYMAZE\data\模型\knight\knight.jpg
?????文件?????320236??2004-01-30?06:50??源代碼\MYMAZE\data\模型\knight\knight.md2
?????文件?????196652??2009-12-09?14:35??源代碼\MYMAZE\data\模型\knight\knight.tga
?????文件?????129407??2004-02-09?20:25??源代碼\MYMAZE\data\模型\Necromicus\necromicus.tga
?????文件?????436652??2004-02-09?20:25??源代碼\MYMAZE\data\模型\Necromicus\tris.md2
?????文件??????69959??2004-02-09?20:26??源代碼\MYMAZE\data\模型\rhino\rhino.tga
?????文件?????418932??2004-02-09?20:27??源代碼\MYMAZE\data\模型\rhino\tris.md2
?????文件?????565040??2004-01-30?06:48??源代碼\MYMAZE\data\模型\丑牛\tris.MD2
?????文件?????192044??2009-12-11?19:30??源代碼\MYMAZE\data\模型\丑牛\tris.tga
?????文件?????259348??1999-12-23?16:52??源代碼\MYMAZE\data\模型\怪獸\goblin.md2
?????文件?????196652??2009-12-11?19:41??源代碼\MYMAZE\data\模型\怪獸\goblin.tga
?????文件?????362288??2000-05-10?11:42??源代碼\MYMAZE\data\模型\木乃伊\hueteotl.MD2
?????文件?????196652??2009-12-11?19:43??源代碼\MYMAZE\data\模型\木乃伊\hueteotl_b.tga
............此處省略36個文件信息
- 上一篇:收藏的許多MD2模型
- 下一篇:基于zigbee的溫度傳感器DS18B20
評論
共有 條評論