From 53d4ae519e2eaa96354aaf4246dd7dd91f5aa72a Mon Sep 17 00:00:00 2001 From: deccer Date: Mon, 26 Dec 2022 04:05:24 +0100 Subject: [PATCH] Expose Framebuffer removal --- src/EngineKit/Graphics/FramebufferFactory.cs | 9 +++++++++ src/EngineKit/Graphics/GraphicsContext.cs | 5 +++++ src/EngineKit/Graphics/IFramebufferFactory.cs | 2 ++ src/EngineKit/Graphics/IGraphicsContext.cs | 2 ++ 4 files changed, 18 insertions(+) diff --git a/src/EngineKit/Graphics/FramebufferFactory.cs b/src/EngineKit/Graphics/FramebufferFactory.cs index f8fb060..8c0cb12 100644 --- a/src/EngineKit/Graphics/FramebufferFactory.cs +++ b/src/EngineKit/Graphics/FramebufferFactory.cs @@ -33,6 +33,15 @@ public uint GetOrCreateFramebuffer(FramebufferRenderDescriptor framebufferRender : CreateFramebuffer(framebufferRenderDescriptor); } + public void RemoveFramebuffer(FramebufferRenderDescriptor framebufferRenderDescriptor) + { + if (_framebufferCache.TryGetValue(framebufferRenderDescriptor, out var framebuffer)) + { + GL.DeleteFramebuffer(framebuffer); + _framebufferCache.Remove(framebufferRenderDescriptor); + } + } + private uint CreateFramebuffer(FramebufferRenderDescriptor framebufferRenderDescriptor) { _logger.Debug("Creating Framebuffer"); diff --git a/src/EngineKit/Graphics/GraphicsContext.cs b/src/EngineKit/Graphics/GraphicsContext.cs index a223996..d0ea05b 100644 --- a/src/EngineKit/Graphics/GraphicsContext.cs +++ b/src/EngineKit/Graphics/GraphicsContext.cs @@ -512,4 +512,9 @@ public void InsertMemoryBarrier(BarrierMask mask) { GL.MemoryBarrier(mask.ToGL()); } + + public void RemoveFramebuffer(FramebufferRenderDescriptor framebufferRenderDescriptor) + { + _framebufferFactory.RemoveFramebuffer(framebufferRenderDescriptor); + } } \ No newline at end of file diff --git a/src/EngineKit/Graphics/IFramebufferFactory.cs b/src/EngineKit/Graphics/IFramebufferFactory.cs index 430d031..450761a 100644 --- a/src/EngineKit/Graphics/IFramebufferFactory.cs +++ b/src/EngineKit/Graphics/IFramebufferFactory.cs @@ -5,4 +5,6 @@ namespace EngineKit.Graphics; internal interface IFramebufferFactory : IDisposable { uint GetOrCreateFramebuffer(FramebufferRenderDescriptor framebufferRenderDescriptor); + + void RemoveFramebuffer(FramebufferRenderDescriptor framebufferRenderDescriptor); } \ No newline at end of file diff --git a/src/EngineKit/Graphics/IGraphicsContext.cs b/src/EngineKit/Graphics/IGraphicsContext.cs index ee36675..3aa05dd 100644 --- a/src/EngineKit/Graphics/IGraphicsContext.cs +++ b/src/EngineKit/Graphics/IGraphicsContext.cs @@ -64,4 +64,6 @@ ITexture CreateTexture2D( void EndRender(); void InsertMemoryBarrier(BarrierMask mask); + + void RemoveFramebuffer(FramebufferRenderDescriptor framebufferRenderDescriptor); } \ No newline at end of file