基于OpenGL的3D迷宫漫游程序,包括模型加载、纹理映射、碰撞处理、摄像漫游等,带详细按键说明和文档
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1715200 2010-11-08 12:51 实验报告wendang.doc
文件 7038 2004-02-09 20:23 源代码MYMAZECTargaImage.cpp
文件 2241 2009-12-08 09:57 源代码MYMAZECTargaImage.h
文件 197147 2004-02-09 20:29 源代码MYMAZEdatamapBrick.tga
文件 4225 2004-02-09 20:24 源代码MYMAZEdatamapheightmap.raw
文件 197147 2004-02-09 20:30 源代码MYMAZEdatamapMarble.tga
文件 194727 2004-02-09 07:38 源代码MYMAZEdatamapwater.tga
文件 786476 2004-02-09 20:27 源代码MYMAZEdataskyboxk.tga
文件 786971 2004-02-09 20:28 源代码MYMAZEdataskyboxdn.tga
文件 786476 2004-02-09 20:28 源代码MYMAZEdataskyboxft.tga
文件 786476 2004-02-09 20:28 源代码MYMAZEdataskyboxlt.tga
文件 4585 2004-02-09 20:28 源代码MYMAZEdataskyboxMorning Dew.nfo
文件 140 2004-02-09 20:28 源代码MYMAZEdataskybox
eadme.txt
文件 786476 2004-02-09 20:29 源代码MYMAZEdataskybox
t.tga
文件 786971 2004-02-09 20:29 源代码MYMAZEdataskyboxup.tga
文件 145357 2004-02-09 20:23 源代码MYMAZEdata模型centaurCentaur.tga
文件 246120 2004-02-09 20:23 源代码MYMAZEdata模型centaurTris.md2
文件 33344 2008-03-30 19:06 源代码MYMAZEdata模型knightknight.jpg
文件 320236 2004-01-30 06:50 源代码MYMAZEdata模型knightknight.md2
文件 196652 2009-12-09 14:35 源代码MYMAZEdata模型knightknight.tga
文件 129407 2004-02-09 20:25 源代码MYMAZEdata模型Necromicus
ecromicus.tga
文件 436652 2004-02-09 20:25 源代码MYMAZEdata模型Necromicus ris.md2
文件 69959 2004-02-09 20:26 源代码MYMAZEdata模型
hino
hino.tga
文件 418932 2004-02-09 20:27 源代码MYMAZEdata模型
hino ris.md2
文件 565040 2004-01-30 06:48 源代码MYMAZEdata模型丑牛 ris.MD2
文件 192044 2009-12-11 19:30 源代码MYMAZEdata模型丑牛 ris.tga
文件 259348 1999-12-23 16:52 源代码MYMAZEdata模型怪兽goblin.md2
文件 196652 2009-12-11 19:41 源代码MYMAZEdata模型怪兽goblin.tga
文件 362288 2000-05-10 11:42 源代码MYMAZEdata模型木乃伊hueteotl.MD2
文件 196652 2009-12-11 19:43 源代码MYMAZEdata模型木乃伊hueteotl_b.tga
............此处省略36个文件信息
#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 源代码MYMAZECTargaImage.cpp
文件 2241 2009-12-08 09:57 源代码MYMAZECTargaImage.h
文件 197147 2004-02-09 20:29 源代码MYMAZEdatamapBrick.tga
文件 4225 2004-02-09 20:24 源代码MYMAZEdatamapheightmap.raw
文件 197147 2004-02-09 20:30 源代码MYMAZEdatamapMarble.tga
文件 194727 2004-02-09 07:38 源代码MYMAZEdatamapwater.tga
文件 786476 2004-02-09 20:27 源代码MYMAZEdataskyboxk.tga
文件 786971 2004-02-09 20:28 源代码MYMAZEdataskyboxdn.tga
文件 786476 2004-02-09 20:28 源代码MYMAZEdataskyboxft.tga
文件 786476 2004-02-09 20:28 源代码MYMAZEdataskyboxlt.tga
文件 4585 2004-02-09 20:28 源代码MYMAZEdataskyboxMorning Dew.nfo
文件 140 2004-02-09 20:28 源代码MYMAZEdataskybox
eadme.txt
文件 786476 2004-02-09 20:29 源代码MYMAZEdataskybox
t.tga
文件 786971 2004-02-09 20:29 源代码MYMAZEdataskyboxup.tga
文件 145357 2004-02-09 20:23 源代码MYMAZEdata模型centaurCentaur.tga
文件 246120 2004-02-09 20:23 源代码MYMAZEdata模型centaurTris.md2
文件 33344 2008-03-30 19:06 源代码MYMAZEdata模型knightknight.jpg
文件 320236 2004-01-30 06:50 源代码MYMAZEdata模型knightknight.md2
文件 196652 2009-12-09 14:35 源代码MYMAZEdata模型knightknight.tga
文件 129407 2004-02-09 20:25 源代码MYMAZEdata模型Necromicus
ecromicus.tga
文件 436652 2004-02-09 20:25 源代码MYMAZEdata模型Necromicus ris.md2
文件 69959 2004-02-09 20:26 源代码MYMAZEdata模型
hino
hino.tga
文件 418932 2004-02-09 20:27 源代码MYMAZEdata模型
hino ris.md2
文件 565040 2004-01-30 06:48 源代码MYMAZEdata模型丑牛 ris.MD2
文件 192044 2009-12-11 19:30 源代码MYMAZEdata模型丑牛 ris.tga
文件 259348 1999-12-23 16:52 源代码MYMAZEdata模型怪兽goblin.md2
文件 196652 2009-12-11 19:41 源代码MYMAZEdata模型怪兽goblin.tga
文件 362288 2000-05-10 11:42 源代码MYMAZEdata模型木乃伊hueteotl.MD2
文件 196652 2009-12-11 19:43 源代码MYMAZEdata模型木乃伊hueteotl_b.tga
............此处省略36个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)