DirectXRenderManager 渲染機制


從類結構上看其繼承與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 格式










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章