www.pudn.com > 3D_Tank.rar > Sprite.cpp
#include "Sprite.h"
ImageDrawer::ImageDrawer()
{}
ImageDrawer::~ImageDrawer()
{}
VOID ImageDrawer::Init(const CComPtr &device)
{
m_pDevice = device;
HRESULT hr;
ID3DXSprite *sprite;
hr = D3DXCreateSprite(m_pDevice.Get(), &sprite);
if (FAILED(hr))
{ HrError(hr);}
m_pSprite.Reset(sprite);
}
BOOL ImageDrawer::AddImage(LPTSTR lptstrFile, D3DCOLOR key)
{
if (lptstrFile == NULL)
{ return FALSE;}
else
{
IDirect3DTexture9 *tex;
D3DXCreateTextureFromFileEx(m_pDevice.Get(), lptstrFile, 0/*width*/, 0/*height*/, 1/*miplevel*/,
0/*usage*/, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, D3DX_DEFAULT,
D3DX_DEFAULT, key, NULL, NULL, &tex);
m_mapTexture.insert(std::pair(lptstrFile, ptrTexture(tex)));
return TRUE;
}
}
VOID ImageDrawer::Draw(LPTSTR lptstrFile, const D3DXVECTOR3 &position, DWORD flag)
{
mapTexture::iterator pos;
pos = m_mapTexture.find(lptstrFile);
if (pos != m_mapTexture.end())
{
m_pSprite->Begin(flag);
m_pSprite->Draw(pos->second.Get(), 0/*画整个图片*/, 0/*中心点*/, &position, 0xffffffff);
m_pSprite->End();
}
}