当前位置:首页 > Windows程序 > 正文

WINCE下使用OPENGL(2)

2021-03-16 Windows程序

/******************************************************************** 

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