• 大小:
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-14
  • 语言: 其他
  • 标签: OPenGL  

资源简介

OpenGL编程精粹源代码

资源截图

代码片段和文件信息

//======================================================================
/**
*  @file  CBMPLoader.cpp
*
*  项目描述: OpenGL混合
*  文件描述:  载入位图类 
*  适用平台: Windows98/2000/NT/XP
*  
*  作者:     BrightXu
*  电子邮件:  huoxini@hotmail.com
*  创建日期: 2006-11-23
*  修改日期: 2006-11-28
*
*/
//======================================================================
#include“CBMPLoader.h“              /**< 包含头文件 */

/** 构造函数 */
CBMPLoader::CBMPLoader()
{
   /** 初始化成员值为0 */
image = 0;
imageWidth = 0;
imageHeight = 0;
}

/** 析构函数 */
CBMPLoader::~CBMPLoader()
{
   FreeImage(); /**< 释放图像数据占据的内存 */
}

/** 装载一个位图文件 */
bool CBMPLoader::LoadBitmap(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;         /**< 成功返回 */
}

/** 释放内存 */
void CBMPLoader::FreeImage()
{
   /** 释放分配的内存 */
   if(image)
      {
         delete[] image;
         image = 0;
      }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-05-08 13:24  OpenGL实例编程精粹\
     目录           0  2011-05-08 13:19  OpenGL实例编程精粹\第10章\
     目录           0  2011-05-08 13:40  OpenGL实例编程精粹\第10章\Blend\
     文件      152516  2010-07-12 13:53  OpenGL实例编程精粹\第10章\Blend\bak.bmp
     文件      241664  2010-07-13 09:24  OpenGL实例编程精粹\第10章\Blend\Blend.exe
     文件        3347  2006-11-08 21:13  OpenGL实例编程精粹\第10章\Blend\Blend.rc
     文件         870  2010-07-13 09:23  OpenGL实例编程精粹\第10章\Blend\Blend.sln
     文件        8704  2010-07-13 09:25  OpenGL实例编程精粹\第10章\Blend\Blend.suo
     文件        8704  2006-11-29 22:01  OpenGL实例编程精粹\第10章\Blend\Blend.suo.old
     文件        4917  2010-07-13 09:23  OpenGL实例编程精粹\第10章\Blend\Blend.vcproj
     文件        2649  2006-11-28 21:39  OpenGL实例编程精粹\第10章\Blend\CBMPLoader.cpp
     文件        1131  2006-11-28 21:39  OpenGL实例编程精粹\第10章\Blend\CBMPLoader.h
     文件           9  2007-03-10 08:49  OpenGL实例编程精粹\第10章\Blend\Desktop_.ini
     文件        7293  2006-11-29 21:28  OpenGL实例编程精粹\第10章\Blend\Example.cpp
     文件        1998  2006-11-28 21:59  OpenGL实例编程精粹\第10章\Blend\Example.h
     文件       10694  2006-11-29 21:28  OpenGL实例编程精粹\第10章\Blend\GLframe.cpp
     文件        3778  2006-11-28 21:39  OpenGL实例编程精粹\第10章\Blend\GLframe.h
     文件        9530  2006-11-28 21:35  OpenGL实例编程精粹\第10章\Blend\GLWindow.cpp
     文件        2621  2006-11-28 21:39  OpenGL实例编程精粹\第10章\Blend\GLWindow.h
     文件      193590  2006-11-26 21:30  OpenGL实例编程精粹\第10章\Blend\image.bmp
     文件         910  2006-11-08 21:00  OpenGL实例编程精粹\第10章\Blend\resource.h
     文件        2872  2006-11-28 21:39  OpenGL实例编程精粹\第10章\Blend\ScreenDlg.cpp
     文件         922  2006-11-28 21:39  OpenGL实例编程精粹\第10章\Blend\ScreenDlg.h
     目录           0  2011-05-08 13:19  OpenGL实例编程精粹\第11章\
     目录           0  2011-05-08 13:40  OpenGL实例编程精粹\第11章\Antialiasing1\
     文件      236544  2010-07-13 09:24  OpenGL实例编程精粹\第11章\Antialiasing1\Antialiasing1.exe
     文件        3347  2006-11-08 21:13  OpenGL实例编程精粹\第11章\Antialiasing1\Antialiasing1.rc
     文件         886  2010-07-13 09:24  OpenGL实例编程精粹\第11章\Antialiasing1\Antialiasing1.sln
     文件        8704  2010-07-13 09:25  OpenGL实例编程精粹\第11章\Antialiasing1\Antialiasing1.suo
     文件        7680  2006-12-01 19:14  OpenGL实例编程精粹\第11章\Antialiasing1\Antialiasing1.suo.old
     文件        4827  2010-07-13 09:24  OpenGL实例编程精粹\第11章\Antialiasing1\Antialiasing1.vcproj
............此处省略881个文件信息

评论

共有 条评论