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(); 
	} 
}