From 0db85de067eeeea2ae848d6d415c05b82e11c12a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Thu, 17 Feb 2022 14:15:38 +0100 Subject: [PATCH] Release build fixes + ImGui build flag Fonts still not working --- GlitchyEngine/BeefProj.toml | 4 +-- GlitchyEngine/src/Application.bf | 26 ++++++++++++++----- GlitchyEngine/src/ImGui/ImGuiLayer.bf | 5 +++- .../src/Platform/DX11/Dx11Platform.bf | 14 +++++++--- GlitchyEngine/src/Program.bf | 1 + Sandbox/src/ExampleLayer2D.bf | 19 ++++++++------ 6 files changed, 48 insertions(+), 21 deletions(-) diff --git a/GlitchyEngine/BeefProj.toml b/GlitchyEngine/BeefProj.toml index f63711e..a9695a3 100644 --- a/GlitchyEngine/BeefProj.toml +++ b/GlitchyEngine/BeefProj.toml @@ -15,7 +15,7 @@ PreprocessorMacros = ["DEBUG", "PARANOID", "GE_WINDOWS"] PreprocessorMacros = ["RELEASE", "GE_WINDOWS"] [Configs.Release.Win64] -PreprocessorMacros = ["RELEASE", "GE_PROFILE"] +PreprocessorMacros = ["IMGUI", "RELEASE", "GE_PROFILE"] [Configs.Test.Win32] PreprocessorMacros = ["TEST", "GE_WINDOWS"] @@ -24,4 +24,4 @@ PreprocessorMacros = ["TEST", "GE_WINDOWS"] PreprocessorMacros = ["TEST", "GE_WINDOWS"] [Configs.Debug.Win64] -PreprocessorMacros = ["DEBUG", "GE_PROFILE", "GE_PROFILE_RENDERER", "GE_PROFILE_RESOURCES"] +PreprocessorMacros = ["DEBUG", "GE_PROFILE", "GE_PROFILE_RENDERER", "GE_PROFILE_RESOURCES", "IMGUI"] diff --git a/GlitchyEngine/src/Application.bf b/GlitchyEngine/src/Application.bf index 6950498..bff531f 100644 --- a/GlitchyEngine/src/Application.bf +++ b/GlitchyEngine/src/Application.bf @@ -10,18 +10,20 @@ namespace GlitchyEngine { static Application s_Instance = null; - private Window _window ~ delete _; - private RendererAPI _rendererApi ~ delete _; - private EffectLibrary _effectLibrary ~ delete _; + private Window _window; + private RendererAPI _rendererApi; + private EffectLibrary _effectLibrary; private bool _running = true; private bool _isMinimized = false; - private LayerStack _layerStack = new LayerStack(); + private LayerStack _layerStack; +#if IMGUI private ImGuiLayer _imGuiLayer; +#endif - private GameTime _gameTime = new GameTime(true); + private GameTime _gameTime; public bool IsRunning => _running; public Window Window => _window; @@ -40,6 +42,9 @@ namespace GlitchyEngine Log.EngineLogger.Assert(s_Instance == null, "Tried to create a second application."); s_Instance = this; + _layerStack = new LayerStack(); + _gameTime = new GameTime(true); + _window = new Window(.Default); _window.EventCallback = new => OnEvent; @@ -54,18 +59,25 @@ namespace GlitchyEngine Renderer.Init(_window.Context, _effectLibrary); +#if IMGUI _imGuiLayer = new ImGuiLayer(); PushOverlay(_imGuiLayer); +#endif } public ~this() { Profiler.ProfileFunction!(); - delete _layerStack; SamplerStateManager.Uninit(); Renderer.Deinit(); + + delete _effectLibrary; + delete _rendererApi; + delete _window; + delete _gameTime; + delete _layerStack; } public void OnEvent(Event e) @@ -131,7 +143,9 @@ namespace GlitchyEngine if(allowFrame) { +#if IMGUI _imGuiLayer.ImGuiRender(); +#endif _window.Context.SwapChain.Present(); } diff --git a/GlitchyEngine/src/ImGui/ImGuiLayer.bf b/GlitchyEngine/src/ImGui/ImGuiLayer.bf index 3987f0f..09840e1 100644 --- a/GlitchyEngine/src/ImGui/ImGuiLayer.bf +++ b/GlitchyEngine/src/ImGui/ImGuiLayer.bf @@ -194,7 +194,7 @@ namespace GlitchyEngine.ImGui //var v = DirectX.ImmediateContext; //v.OutputMerger.SetRenderTargets(1, &DirectX.BackBufferTarget, null); Application.Get().Window.Context.SetRenderTarget(null); - + ImGuiImplDX11.NewFrame(); ImGuiImplWin32.NewFrame(); ImGui.NewFrame(); @@ -229,7 +229,10 @@ namespace GlitchyEngine.ImGui io.DisplaySize = .(window.Width, window.Height); ImGui.Render(); + +#if GE_GRAPHICS_DX11 ImGuiImplDX11.RenderDrawData(ImGui.GetDrawData()); +#endif ImGui.CleanupFrame(); diff --git a/GlitchyEngine/src/Platform/DX11/Dx11Platform.bf b/GlitchyEngine/src/Platform/DX11/Dx11Platform.bf index 847757b..f60c241 100644 --- a/GlitchyEngine/src/Platform/DX11/Dx11Platform.bf +++ b/GlitchyEngine/src/Platform/DX11/Dx11Platform.bf @@ -17,7 +17,9 @@ namespace GlitchyEngine.Platform.DX11 protected internal static ID3D11Device* NativeDevice; protected internal static ID3D11DeviceContext* NativeContext; +#if DEBUG protected internal static ID3D11Debug* DebugDevice; +#endif internal static void Dx11Init() { @@ -28,9 +30,9 @@ namespace GlitchyEngine.Platform.DX11 Log.EngineLogger.Trace("Creating D3D11 Device and Context..."); DeviceCreationFlags deviceFlags = .None; - #if DEBUG +#if DEBUG deviceFlags |= .Debug; - #endif +#endif FeatureLevel[] levels = scope .(.Level_11_0); @@ -44,7 +46,7 @@ namespace GlitchyEngine.Platform.DX11 Log.EngineLogger.Assert(deviceResult.Succeeded, scope $"Failed to create D3D11 Device. Message({(int32)deviceResult}): {deviceResult}"); - #if DEBUG +#if DEBUG { Debug.Profiler.ProfileScope!("Query for ID3D11Debug"); if(NativeDevice.QueryInterface(out DebugDevice).Succeeded) @@ -59,7 +61,7 @@ namespace GlitchyEngine.Platform.DX11 } } } - #endif +#endif Log.EngineLogger.Trace($"D3D11 Device and Context created (Feature level: {deviceLevel})"); } @@ -68,7 +70,9 @@ namespace GlitchyEngine.Platform.DX11 // We created a second GraphicsContext (for some reason?) just increment references. NativeDevice.AddRef(); NativeContext.AddRef(); +#if DEBUG DebugDevice.AddRef(); +#endif } } @@ -78,8 +82,10 @@ namespace GlitchyEngine.Platform.DX11 NativeDevice.Release(); NativeContext.Release(); +#if DEBUG DebugDevice.ReportLiveDeviceObjects(.Detail); DebugDevice.Release(); +#endif } } } diff --git a/GlitchyEngine/src/Program.bf b/GlitchyEngine/src/Program.bf index 4a999e2..ae79d10 100644 --- a/GlitchyEngine/src/Program.bf +++ b/GlitchyEngine/src/Program.bf @@ -42,6 +42,7 @@ namespace GlitchyEngine Log.EngineLogger.Info("Application uninitialized."); } + Debug.Profiler.EndProfiling(); return 0; diff --git a/Sandbox/src/ExampleLayer2D.bf b/Sandbox/src/ExampleLayer2D.bf index 43ec4db..b168708 100644 --- a/Sandbox/src/ExampleLayer2D.bf +++ b/Sandbox/src/ExampleLayer2D.bf @@ -27,10 +27,13 @@ namespace Sandbox OrthographicCameraController cameraController ~ delete _; - Font fonty ~ _.ReleaseRef(); + // Font fonty ~ _.ReleaseRef(); ColorRGBA _squareColor0 = ColorRGBA.CornflowerBlue; - ColorRGBA _squareColor1; + ColorRGBA _squareColor1 = { + ColorRGBA color = ColorRGBA.White - _squareColor0; + color.A = _squareColor0.A; + color}; DepthStencilState _depthStencilState ~ _.ReleaseRef(); @@ -61,7 +64,7 @@ namespace Sandbox blendDesc.RenderTarget[0] = .(true, .SourceAlpha, .InvertedSourceAlpha, .Add, .SourceAlpha, .InvertedSourceAlpha, .Add, .All); _alphaBlendState = new BlendState(blendDesc); - fonty = new Font("C:\\Windows\\Fonts\\arial.ttf", 64, true, 'A', 16); + /*fonty = new Font("C:\\Windows\\Fonts\\arial.ttf", 64, true, 'A', 16); var japanese = new Font("C:\\Windows\\Fonts\\YuGothM.ttc", 64, true, '\0', 1); var emojis = new Font("C:\\Windows\\Fonts\\seguiemj.ttf", 64, true, '😂' - 10, 1); var mathstuff = new Font("C:\\Windows\\Fonts\\cambria.ttc", 64, true, 'α', 1); @@ -69,7 +72,7 @@ namespace Sandbox fonty.Fallback = japanese..ReleaseRefNoDelete(); japanese.Fallback = emojis..ReleaseRefNoDelete(); emojis.Fallback = mathstuff..ReleaseRefNoDelete(); - mathstuff.Fallback = cascadiaCode..ReleaseRefNoDelete(); + mathstuff.Fallback = cascadiaCode..ReleaseRefNoDelete();*/ _textureViewer = new TextureViewer(); @@ -133,9 +136,9 @@ namespace Sandbox Renderer2D.DrawQuad(Vector3(2 * x, 2 * y, 0.5f), Vector2(1.5f, 1), MathHelper.PiOverFour, (i == 0) ? _squareColor0 : _squareColor1); } - var prepared = FontRenderer.PrepareText(fonty, text, 64, .White, .White); - FontRenderer.DrawText(prepared, 0, 0); - prepared.ReleaseRef(); + //var prepared = FontRenderer.PrepareText(fonty, text, 64, .White, .White); + //FontRenderer.DrawText(prepared, 0, 0); + //prepared.ReleaseRef(); Renderer2D.EndScene(); } @@ -181,7 +184,7 @@ namespace Sandbox ImGui.End(); //_textureViewer.ViewTexture(fonty.Fallback.Fallback.Fallback.Fallback.[Friend]_atlas); - _textureViewer.ViewTexture(fonty.[Friend]_atlas); + //_textureViewer.ViewTexture(fonty.[Friend]_atlas); _context.SetRenderTarget(null); _context.SetDepthStencilTarget(_depthTarget);