WINCE下使用OPENGL(2)
/********************************************************************
filename: CImgLoader.cpp
created: 2011-01-05
author: firehood
purpose: 文件加载类,将外部图片资源转化成绘制纹理时所需的位图数据
图片格式支持bmp、png、jpg.
*********************************************************************/
#include "StdAfx.h"
#include "ImgLoader.h"
// IImage Includer
#include <imaging.h>
#include <initguid.h>
#include <imgguids.h>
// IImage lib
#pragma comment(lib, "Imaging.lib")
CImgLoader::CImgLoader(void)
{
m_pImage = NULL;
m_Width = 0;
m_Height = 0;
}
CImgLoader::~CImgLoader(void)
{
}
// 加载图片资源
BOOL CImgLoader::Load(LPCTSTR lpFileName)
{
IImagingFactory *pImgFactory = NULL;
IImage *pImage = NULL;
IBitmapImage *pBmpImg = NULL;
//
CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (!SUCCEEDED(CoCreateInstance(CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IImagingFactory, (void **) &pImgFactory)))
return FALSE;
if (!SUCCEEDED(pImgFactory->CreateImageFromFile(lpFileName, &pImage)))
return FALSE;
// 获取图像大小信息
ImageInfo ImgInfo;
pImage->GetImageInfo(&ImgInfo);
m_Width = ImgInfo.Width;
m_Height = ImgInfo.Height;
if (FAILED(pImgFactory->CreateBitmapFromImage(
pImage,m_Width,m_Height,PixelFormat24bppRGB,
InterpolationHintDefault,&pBmpImg)))
{
return FALSE;
}
RECT rect = {0,0,m_Width,m_Height};
BitmapData *BmpData = new BitmapData;
if (FAILED(pBmpImg->LockBits(&rect,
ImageLockModeRead|ImageLockModeWrite,
PixelFormat24bppRGB,BmpData)))
{
return FALSE;
}
int line = BmpData->Stride;
LPBYTE lpData, lpLine, lpCurPixel;
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/61880.html