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

📄 crender.h

📁 一个个人开发的rpg游戏<亚特兰蒂斯传奇>的源码
💻 H
字号:
//渲染流水线
//作者:吴振华(kylinx)(中国科大01级11系)
//E-mail:game-diy@163.com
//Created 2003/6/28 by 吴振华(Kylinx) game-diy@163.com http://kylinx.yeah.net
//
//
#ifndef LOA_RENDER_H_
#define LOA_RENDER_H_
#include<windows.h>
#include"klds.h"
#define LOA_RENDER_API	__stdcall

#define LOA_TASK_PAUSE				1						//任务状态——暂停
#define LOA_TASK_COMPLETE			2						//任务状态——完成
#define LOA_TASK_RUN				3						//任务状态——正在运行
class CRenderTask
{
	friend class CRender;

	DWORD		m_dwTaskState;								//任务状态
	BOOL		m_bAutoRelease;								//是否在渲染完成后自动释放资源
	DWORD		m_dwLastPriority;							//上一次的优先级
	DWORD		m_dwPriority;								//优先级
	DWORD		m_dwID;										//唯一ID
public:
	CRenderTask();
	virtual ~CRenderTask();

	void ActiveTask() {m_dwTaskState=LOA_TASK_RUN;}
	void PauseTask() {m_dwTaskState=LOA_TASK_PAUSE;}
	void EndTask()	 {m_dwTaskState=LOA_TASK_COMPLETE;}
	DWORD CreateTask(BOOL bAutoRelease=TRUE,BOOL bActiveImedit=TRUE,DWORD dwPriority=0);
	DWORD GetTaskID() const {return m_dwID;}
	DWORD GetTaskState() const {return m_dwTaskState;}
	DWORD GetPriority() const {return m_dwPriority;}

protected:
	virtual void LOA_RENDER_API Render()=0;					//渲染
	virtual BOOL LOA_RENDER_API IsRenderComplete()=0;		//是否渲染结束
	virtual void LOA_RENDER_API Release()=0;				//释放派生类的资源
};
class CRender
{
	struct STRenderTaskNode
	{
		CRenderTask			*pTask;
		STRenderTaskNode	*pNext;
		
		STRenderTaskNode()
		{
			pTask=NULL;
			pNext=NULL;
		}
		STRenderTaskNode(CRenderTask*ptask )
		{
			this->pTask=ptask;
			pNext=NULL;
		}

	};

	STRenderTaskNode				*m_pHead;				//头节点
	STRenderTaskNode				*m_pTail;				//尾节点

	DWORD							m_dwLength;				//长度

	

	
	BOOL InsertNode(STRenderTaskNode*pNode);				//插入节点
public:
	static DWORD s_dwCurrentID;								//供CRenderTask使用的ID
	static DWORD GetGlobleID();
public:
	CRender();
	virtual ~CRender();

	void Release();											//释放
	DWORD GetRenderTaskCount() const {return m_dwLength;}	//得到任务个数

	BOOL AddTask(CRenderTask*pTask);						//添加渲染任务
	BOOL FindTask(DWORD dwID,CRenderTask**ppTask);			//查找任务


	void Render();											//执行渲染

	BOOL PauseTask(DWORD dwID);								//暂停某一个任务
	BOOL ResumeTask(DWORD dwID);							//恢复某一个任务
	BOOL StopTask(DWORD dwID);								//终止一个任务

	BOOL SetTaskPriority(DWORD dwID,DWORD dwPriority);		//重新设置某一个任务的优先级
};
#endif

⌨️ 快捷键说明

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