• 大小: 13.14MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-13
  • 语言: 其他
  • 标签: OpenGL  物理碰撞  

资源简介

是基于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;/**< 用于将图像颜色从BGR变换到RGB */

   /** 打开文件并检查错误 */
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.embed.manifest

     文件        472  2015-04-04 20:11  OpenGL物理碰撞效果\Collide\Debug\Collide.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论