资源简介
是基于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.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个文件信息
相关资源
- OpenGL小游戏
- OpenGL超级宝典第五版pdf及其随书源码
- OpenGL读取bunny文件+斯坦福兔子
- OpenGL开发的教室场景可以漫游
- OpenGL高级编程与可视化系统开发-系统
- opengl读取.obj三维模型,arcball实现鼠标
- OpenGL超级宝典 第5版 中文版 完整书签
- Computer Graphics with OpenGL 4th edition 高清
- OpenGL 4.0 Shading Language Cookbook及完整源
- Computer_Graphics_with_OpenGL_4th_ed.pdf
- opengl读入obj文件并实现平移旋转贴图
- OGL模型加载
- OPENGL 经典案例 整套
- opengl包含16个鼠标控制点的Bezier曲面
- qt下opengl的三维视角转换算法
- OpenGL鱼眼镜头特效的视频播放器 基于
- opengl实现bezier曲面的纹理贴图、鼠标
- assimp.dll
- OpenGL SDK
- OpenGL读取点云文件并绘制
- 计算机图形学大作业
- OpenCV与OpenGL实现增强现实
- 3d opengl 飞行射击游戏源码和论文
- 20个可读的obj模型文件
- opengl实现模型读取以及光照,移动等
- Opengl实现旗帜飘扬效果
- OpenGL星星公转自转
- OpenGL显示三维点云图像
- opengl绘制太阳、地球、月球
- Qt通过控件控制立方体旋转
评论
共有 条评论