public void ReleaseResources() { // Dispose render commands foreach (var command in _renderList) { if (command is IDisposable disposable) { disposable.Dispose(); } } // Dispose all loaded textures _textureLoader.Dispose(); // Handle used by error handler callback if (_gcHandle != default) { _gcHandle.Free(); _gcHandle = default; } // Dispose MRT frame buffer GL.DeleteFramebuffer(_mrtFrameBufferId); GL.DeleteTexture(_mrtFrameBufferMainTextureId); GL.DeleteRenderbuffer(_mrtFrameBufferDepthId); _logger.LogInformation("Render commands disposed"); }