⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 texturemanager.cpp

📁 国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国内还没有,所以找不到测试
💻 CPP
字号:
// TextureManager.cpp: implementation of the CTextureManager class.
//
//////////////////////////////////////////////////////////////////////

#include "StdAfx.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CTextureManager::CTextureManager()
{
	m_vlTexture.clear();
}

CTextureManager::~CTextureManager()
{
	vector<MCTEXTURE *>::iterator iter;
	for(iter = m_vlTexture.begin() ; iter != m_vlTexture.end() ; iter++)
	{
		MCTEXTURE * pTexture = (MCTEXTURE *)*iter;
		SAFE_DELETE(pTexture);
	}
	m_vlTexture.clear();
}

MCTEXTURE * CTextureManager::AddTexture( MCTEXTURE * pTexture )
{
	// 版肺风 厚背秦辑 持绢霖促..
	MCTEXTURE * pRetTex = FindTexture( -1, pTexture->szTextureName );
	if( pRetTex == NULL)
	{
		//if(FAILED(D3DXCreateTextureFromFile( g_pApp->GetD3dDevice(),pTexture->szTextureName,&pTexture->pTexture )) )
		if( FAILED( D3DXCreateTextureFromFileEx( g_pApp->GetD3dDevice(), pTexture->szTextureName,
						//D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, 
						D3DX_DEFAULT, D3DX_DEFAULT, 0, 0, D3DFMT_UNKNOWN, 
						MEMORY_POOL, D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR,
						D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR, 0, NULL, NULL, &pTexture->pTexture ) ) )
		{
			OutputDebugString("\n 咆胶贸肺靛 角菩!! \n");
			return NULL;
		}
		// 持绢淋..
		pTexture->nIndex = m_vlTexture.size();
		m_vlTexture.push_back(pTexture);
		return pTexture;
	}
	return pRetTex;
}

MCTEXTURE * CTextureManager::AddTexture( char * szTexName )
{
	// 版肺风 厚背秦辑 持绢霖促..
	MCTEXTURE * pRetTex = FindTexture( -1, szTexName );
	if( pRetTex == NULL)
	{
		MCTEXTURE * pRetTex = new MCTEXTURE;
		strcpy(pRetTex->szTextureName,szTexName);
		if( FAILED( D3DXCreateTextureFromFileEx( g_pApp->GetD3dDevice(), pRetTex->szTextureName,
						D3DX_DEFAULT, D3DX_DEFAULT, 0, 0, D3DFMT_UNKNOWN, 
						MEMORY_POOL, D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR,
						D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR, 0, NULL, NULL, &pRetTex->pTexture ) ) )
		{
			SAFE_DELETE(pRetTex);
			OutputDebugString("\n 咆胶贸肺靛 角菩!! \n");
			return NULL;
		}
		// 持绢淋..
		pRetTex->nIndex = m_vlTexture.size();
		m_vlTexture.push_back(pRetTex);
		return pRetTex;
	}
	return pRetTex;
}

MCTEXTURE * CTextureManager::AddBumpTexture( MCTEXTURE * pTexture )
{
	MCTEXTURE * pRetTex = FindTexture( -1, pTexture->szTextureName );
	if( pRetTex == NULL)
	{
		LPDIRECT3DTEXTURE9 pHeightMap;
		if(FAILED(D3DXCreateTextureFromFile( g_pApp->GetD3dDevice(),pTexture->szTextureName,&pHeightMap )) )
		{
			OutputDebugString("\n 咆胶贸肺靛 角菩!! \n");
			return NULL;
		}
		// 持绢淋..
		D3DSURFACE_DESC    desc;
		INT iWidth,iHeight;
		pHeightMap->GetLevelDesc(0,&desc);

		iWidth  = desc.Width;
		iHeight = desc.Height;

		if(FAILED(D3DXCreateTexture( g_pApp->GetD3dDevice(), iWidth, iHeight, 0, 0,
									D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &pTexture->pTexture)))
		{
			OutputDebugString("\n 裹橇 咆胶贸积己 角菩!!");
			return NULL;
		}

		D3DXComputeNormalMap( pTexture->pTexture, pHeightMap, NULL, 0, D3DX_CHANNEL_RED, 10.0f );

		SAFE_RELEASE(pHeightMap);

		pTexture->nIndex = m_vlTexture.size();
		m_vlTexture.push_back(pTexture);
		return pTexture;
	}
	return pRetTex;
}


void CTextureManager::DelTexture( int nIndex )
{
	vector<MCTEXTURE *>::iterator iter;
	for(iter = m_vlTexture.begin() ; iter != m_vlTexture.end() ; iter++)
	{
		MCTEXTURE * pDelTexture = (MCTEXTURE *)*iter;
		if( pDelTexture->nIndex == nIndex)
		{
			SAFE_DELETE(pDelTexture);
			m_vlTexture.erase(iter);
			return;
		}
	}
}

MCTEXTURE * CTextureManager::FindTexture( int nIndex, char * szTextureName )
{
	vector<MCTEXTURE *>::iterator iter;
	for(iter = m_vlTexture.begin() ; iter != m_vlTexture.end() ; iter++)
	{
		MCTEXTURE * pTexture = (MCTEXTURE *)*iter;
		if(nIndex == -1)
		{
			if( !strcmp( pTexture->szTextureName, szTextureName ))
				return pTexture;
		}else if( pTexture->nIndex == nIndex ){
			return pTexture;
		}
	}
	return NULL;
}

HRESULT CTextureManager::InvalidateDeviceObjects()
{
	vector<MCTEXTURE *>::iterator iter;
	for(iter = m_vlTexture.begin() ; iter != m_vlTexture.end() ; iter++)
	{
		MCTEXTURE * pInvalidTex = (MCTEXTURE *)*iter;
		SAFE_RELEASE(pInvalidTex->pTexture);
	}
	return S_OK;
}

HRESULT CTextureManager::RestoreDeviceObjects()
{
	vector<MCTEXTURE *>::iterator iter;
	for(iter = m_vlTexture.begin() ; iter != m_vlTexture.end() ; iter++)
	{
		MCTEXTURE * pTexture = (MCTEXTURE *)*iter;
		if( FAILED( D3DXCreateTextureFromFileEx( g_pApp->GetD3dDevice(), pTexture->szTextureName,
						//D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, 
						D3DX_DEFAULT, D3DX_DEFAULT, 0, 0, D3DFMT_UNKNOWN, 
						MEMORY_POOL, D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR,
						D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR, 0, NULL, NULL, &pTexture->pTexture ) ) )
		{
			OutputDebugString("\n CTextureManager::RestoreDeviceObjects 咆胶贸肺靛 角菩!! \n");
			return E_FAIL;
		}
	}
	return S_OK;
}

void CTextureManager::DestroyTexture()
{
	vector<MCTEXTURE *>::iterator iter;
	for(iter = m_vlTexture.begin() ; iter != m_vlTexture.end() ; iter++)
	{
		MCTEXTURE * pTexture = (MCTEXTURE *)*iter;
		SAFE_DELETE(pTexture);
	}
	m_vlTexture.clear();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -