protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.LightGray); _deviceState.Push(); RenderBackGround(); _deviceState.Pop(); _drawMetrics = GraphicsDevice.Metrics; switch (State.RenderState) { case RenderState.ShadowMap: case RenderState.Depth: RenderModel(); break; case RenderState.Simple: RenderModelNoShadow(); break; default: throw new ArgumentOutOfRangeException(); } _drawMetrics = GraphicsDevice.Metrics - _drawMetrics; _deviceState.Push(); RenderUI(); // Render components base.Draw(gameTime); _deviceState.Pop(); }
/// <summary> /// 自己的帧绘制更新函数 /// </summary> private void MyFKGameDraw(GameTime gameTime) { if (m_bIsFirstTimeDraw && m_bIsEditorMode) { HideMonoWindow(); m_bIsFirstTimeDraw = false; } if (m_GameState.GetRenderState().RenderType == RenderState.ENUM_RenderType.eRS_ShadowMap) { UpdateShadowMap(); } RenderDefaultBackground(); m_DrawMatrics = GraphicsDevice.Metrics; // 临时缓存渲染模型之前的渲染数据 switch (m_GameState.GetRenderState().RenderType) { case RenderState.ENUM_RenderType.eRS_SimpleRender: RenderModel(false, false); break; case RenderState.ENUM_RenderType.eRS_ShadowMap: RenderModel(true, true); break; case RenderState.ENUM_RenderType.eRS_Depth: RenderModel(true, false); break; default: throw new ArgumentOutOfRangeException(); } m_DrawMatrics = GraphicsDevice.Metrics - m_DrawMatrics;// 相减获得模型本身的渲染数据 RenderUI(gameTime); }