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

📄 texturemanager.h

📁 一个自己写的游戏引擎,用DirectX 写成
💻 H
字号:
//--------------------------------------------------
//  Desc: Texture Manager
//  Date: 2006.10.27 /update
//  Author: artsylee
//
//  Copyright (C) 2006 artsylee
//
//	扩展: 添加LockTexture & UnLockTexture(2006_11_16)
//		  改变inserttexture
//		  添加对AMF的支持(2006_12_16)
//		  改变批加载支持AMF(2006_12_16)
//        Mipmap支持(2006_12_21)
//
//--------------------------------------------------

#ifndef _TEXTUREMANAGER_
#define _TEXTUREMANAGER_

#include <map>
#include "Texture.h"

typedef DWORD TextureHandle;

#define	BASEHANDLE	5000
#define UPDATETIME	3000
#define MAXEXIST	5000
#define INVALID_HANDLE 0x00

//---------------------------------------------------
// 指定的句柄范围是1~5000,非指定的为5000+
// 指定的为非共享纹理,非指定的为共享纹理
// 会有同文件名的多个纹理,释放只提供句柄操作不提供文件名操作
// QueryHandle为共享纹理,返回值5000+
//---------------------------------------------------

class ASE_DLL CTextureManager
{
public:
	CTextureManager();
	~CTextureManager();

	TextureHandle	LoadTexture(const char *szFilename, MemoryMode mode = MM_AUTO, int mipLevel = 1);
	TextureHandle	LoadAMFTexture(const char *szFilename, DWORD index = 0, MemoryMode mode = MM_AUTO, int mipLevel = 1);
	TextureHandle	LoadTextureDesc(const char *szFilename, int mipLevel = 1);
	TextureHandle	LoadAMFTextureDesc(const char *szFilename, DWORD index = 0, int mipLevel = 1);
	TextureHandle	InsertTexture(CTexture *pTexture, MemoryMode mode = MM_AUTO);
	TextureHandle	LoadTextureFromMem(int width, int height, const DWORD *pData);

	bool	LoadTexture(TextureHandle hTex, const char *szFilename, MemoryMode mode = MM_AUTO, int mipLevel = 1);
	bool	LoadAMFTexture(TextureHandle hTex, const char *szFilename, DWORD index = 0, MemoryMode mode = MM_AUTO, int mipLevel = 1);
	bool	LoadTextureDesc(TextureHandle hTex, const char *szFilename, int mipLevel = 1);
	bool	LoadAMFTextureDesc(TextureHandle hTex, const char *szFilename, DWORD index = 0, int mipLevel = 1);
	bool	BatchLoad(const char *szIniFile);	

	void	ReleaseTexture(TextureHandle texHandle);
	void	DestroyTexture(TextureHandle texHandle);
	void	DestroyAll(void);

	CTexture* GetTexture(TextureHandle texHandle);
	void	Update(void);

	bool	LockTexture(TextureHandle texHandle, D3DLOCKED_RECT *pLockedRect, RECT *pRc = NULL);
	void	UnLockTexture(TextureHandle texHandle);
	// D3DPOOL_DEFAULT的资源在丢失设备时要重新加载
private:
	TextureHandle CreateHandle(void);
	TextureHandle QueryHandle(const char *szFilename, DWORD index = 0);
private:
	std::map<TextureHandle, CTexture*>	m_TextureMap;
	DWORD			m_CurHandle;
	DWORD			m_UpdateTime;
};

#endif // _TEXTUREMANAGER_

⌨️ 快捷键说明

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