using OpenTK; using OpenTK.Graphics; namespace Dashboard.Drawing.OpenGL { public class GLEngine { private readonly Dictionary _executors = new Dictionary(); public bool IsInitialized { get; private set; } = false; public ContextResourcePoolManager ResourcePoolManager { get; private set; } = new ContextResourcePoolManager(); public void Initialize(IBindingsContext? bindingsContext = null) { if (IsInitialized) return; IsInitialized = true; if (bindingsContext != null) GLLoader.LoadBindings(bindingsContext); } public ContextExecutor GetExecutor(IGLContext glContext) { if (!_executors.TryGetValue(glContext, out ContextExecutor? executor)) { executor = new ContextExecutor(this, glContext); executor.Initialize(); _executors.Add(glContext, executor); } return executor; } } }