📄 crender.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 + -