private void InitRenderStuff() { SharedRenderItems = new SharedRenderItemsStorage(this); switch (m_RenderPathType) { case RenderPathEnum.Forward: RenderPath = new ForwardBaseD3D11RenderPath(); break; case RenderPathEnum.Deffered: // TODO: Deffered RenderPath = new DefferedD3D11RenderPath(); break; case RenderPathEnum.TiledForward: // TODO: TiledForward RenderPath = new TiledForwardD3D11RenderPath(); break; } RenderPath.Init(this); m_ConsoleRenderer = new ConsoleRenderer(); m_ConsoleRenderer.Initialize(this); ScreenProps.Width = DisplayRef.Width; ScreenProps.Height = DisplayRef.Height; ScreenProps.AspectRatio = DisplayRef.Width / (float)DisplayRef.Height; EngineOnRunned?.Invoke(); if (!IsSingleFormMode) { return; } using (var loop = new RenderLoop(Surface)) { while (loop.NextFrame()) { if (IsExitRequest) { if (IsSingleFormMode) { ((Form)Surface).Close(); } break; } //profiler.Begin(Context); DisplayRef.Render(IntPtr.Zero, false); //profiler.End(Context); } } Deinitialize(); }
//Utils.GPUProfiler profiler; private void InitializeViews() { DisplayRef.OnResize += OnDisplayResize; DisplayRef.OnInitRenderTarget += OnInitRenderTarget; DisplayRef.OnRender += OnRenderFrame; DisplayRef.InitDevice(); if (!IsSingleFormMode) { return; } DisplayRef.InitRenderTarget(); }
public void Deinitialize() { DisplayRef.OnRender -= OnRenderFrame; DisplayRef.OnInitRenderTarget -= OnInitRenderTarget; if (IsSingleFormMode) { Surface.KeyPress -= m_KeyPressEventHandler; } DisplayRef.OnResize -= OnDisplayResize; EngineQuitAction(); m_ConsoleRenderer?.Dispose(); SharedRenderItems?.Dispose(); RenderPath?.Dispose(); DisplayRef.Cleanup(); DisplayRef = null; }