从类结构上看其继承与RenderManager和IRenderTarget
架构上设计来说,这点事为了敞开接口,与硬件实现分离,
通过C++的多态机制来实现接口分离的作用!
void DirectXRenderManager::drawOneFrame()
{
static Timer timer;
//static variable first initialized
//it will keep his value during next change!
static unsigned long last_time = timer.getMilliseconds();
unsigned long now_time = timer.getMilliseconds();
unsigned long time = now_time - last_time;
Gui* gui = Gui::getInstancePtr();
if (gui != nullptr)
gui->_injectFrameEntered((float)((double)(time) / (double)1000));
last_time = now_time;
begin();
LayerManager::getInstance().renderToTarget(this, mUpdate);
end();
mUpdate = false;
}
这个例程中有两点需要注意:
第一点是gui frame Enter事件的注入
Gui* gui = Gui::getInstancePtr();
if (gui != nullptr)
gui->_injectFrameEntered((float)((double)(time) / (double)1000));
第二点是 LayerManager的渲染过程
begin();
LayerManager::getInstance().renderToTarget(this, mUpdate);
end();
begin 和 end 熟悉的pipe line 格式