资源简介
在opengl中给旋转的立方体和球体赋予纹理贴图
代码片段和文件信息
//======================================================================
/**
* @file CBMPLoader.cpp
*
* 项目描述: 纹理映射
* 文件描述: 载入位图类
* 适用平台: Windows98/2000/NT/XP
*
* 作者: WWBOSS
* 电子邮件: wwboss123@gmail.com
* 创建日期: 2006-11-23
* 修改日期: 2007-07-10
*
*/
//======================================================================
#include“CBMPLoader.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;
}
/** 释放内存 */
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3437 2007-11-13 11:05 Texture\CBMPLoader.cpp
文件 1128 2007-11-13 11:05 Texture\CBMPLoader.h
文件 2763 2007-11-13 11:05 Texture\Debug\BuildLog.htm
文件 15335 2007-11-13 11:05 Texture\Debug\CBMPLoader.obj
文件 29978 2007-11-13 11:05 Texture\Debug\GLfr
文件 23475 2007-11-13 11:05 Texture\Debug\GLWindow.obj
文件 8733 2007-11-13 11:05 Texture\Debug\stdafx.obj
文件 167936 2007-11-13 11:05 Texture\Debug\Texture.exe
文件 644068 2007-11-13 11:05 Texture\Debug\Texture.ilk
文件 33793 2007-11-13 11:05 Texture\Debug\Texture.obj
文件 527360 2007-11-13 11:05 Texture\Debug\Texture.pdb
文件 15749 2007-11-13 11:05 Texture\Debug\TGALoader.obj
文件 363520 2007-11-13 11:05 Texture\Debug\vc70.idb
文件 102400 2007-11-13 11:05 Texture\Debug\vc70.pdb
文件 10261 2007-11-13 11:05 Texture\GLfr
文件 3770 2007-11-13 11:05 Texture\GLfr
文件 9540 2007-11-13 11:05 Texture\GLWindow.cpp
文件 2322 2007-11-13 11:05 Texture\GLWindow.h
文件 193590 2007-11-13 11:05 Texture\image.bmp
文件 786450 2007-11-13 11:05 Texture\sphere.tga
文件 67 2007-11-13 11:05 Texture\stdafx.cpp
文件 734 2007-11-13 11:05 Texture\stdafx.h
文件 7171 2007-11-13 11:05 Texture\Texture.cpp
文件 167936 2007-11-13 11:05 Texture\Texture.exe
文件 2145 2007-11-13 11:05 Texture\Texture.h
文件 224256 2007-11-13 11:05 Texture\Texture.ncb
文件 903 2007-11-13 11:05 Texture\Texture.sln
文件 8192 2007-11-13 11:05 Texture\Texture.suo
文件 3983 2007-11-13 11:05 Texture\Texture.vcproj
文件 3479 2007-11-13 11:05 Texture\TGALoader.cpp
............此处省略6个文件信息
- 上一篇:人工智能-动物识别系统
- 下一篇:T3、U6、T6、U8反启用模块工具2016
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 如何实现bmp位图透明贴图
- 基于Gabor滤波器的图像纹理特征提取
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- 基于纹理的图像检索源代码
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 线性和反向跷跷板中的最大零纹理
- 反向跷跷板中具有破碎的循环对称性
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
评论
共有 条评论