aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs')
-rw-r--r--Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs47
1 files changed, 47 insertions, 0 deletions
diff --git a/Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs b/Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs
new file mode 100644
index 00000000..e090f14c
--- /dev/null
+++ b/Ryujinx.Ava/UI/Renderer/SPBOpenGLContext.cs
@@ -0,0 +1,47 @@
+using OpenTK.Graphics.OpenGL;
+using Ryujinx.Graphics.OpenGL;
+using SPB.Graphics;
+using SPB.Graphics.OpenGL;
+using SPB.Platform;
+using SPB.Windowing;
+
+namespace Ryujinx.Ava.UI.Renderer
+{
+ class SPBOpenGLContext : IOpenGLContext
+ {
+ private readonly OpenGLContextBase _context;
+ private readonly NativeWindowBase _window;
+
+ private SPBOpenGLContext(OpenGLContextBase context, NativeWindowBase window)
+ {
+ _context = context;
+ _window = window;
+ }
+
+ public void Dispose()
+ {
+ _context.Dispose();
+ _window.Dispose();
+ }
+
+ public void MakeCurrent()
+ {
+ _context.MakeCurrent(_window);
+ }
+
+ public static SPBOpenGLContext CreateBackgroundContext(OpenGLContextBase sharedContext)
+ {
+ OpenGLContextBase context = PlatformHelper.CreateOpenGLContext(FramebufferFormat.Default, 3, 3, OpenGLContextFlags.Compat, true, sharedContext);
+ NativeWindowBase window = PlatformHelper.CreateOpenGLWindow(FramebufferFormat.Default, 0, 0, 100, 100);
+
+ context.Initialize(window);
+ context.MakeCurrent(window);
+
+ GL.LoadBindings(new OpenTKBindingsContext(context.GetProcAddress));
+
+ context.MakeCurrent(null);
+
+ return new SPBOpenGLContext(context, window);
+ }
+ }
+}