• 大小: 6.01MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-02
  • 语言: 其他
  • 标签: OpenGL  3D  迷宫  漫游  

资源简介

基于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 < m_imageSize)
{
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个文件信息

评论

共有 条评论