BizHawk/Bizware/BizHawk.Bizware.BizwareGL.O.../GraphicsControl_TK.cs

60 lines
1.4 KiB
C#

using System;
using System.Reflection;
using System.Threading;
using System.IO;
using System.Collections.Generic;
using System.Windows.Forms;
using BizHawk.Bizware.BizwareGL;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
namespace BizHawk.Bizware.BizwareGL.Drivers.OpenTK
{
class GLControlWrapper : GLControl, IGraphicsControl
{
//Note: In order to work around bugs in OpenTK which sometimes do things to a context without making that context active first...
//we are going to push and pop the context before doing stuff
public GLControlWrapper(IGL_TK owner)
: base(GraphicsMode.Default, 2, 0, GraphicsContextFlags.Default)
{
Owner = owner;
GLControl = this;
}
global::OpenTK.GLControl GLControl;
IGL_TK Owner;
public Control Control { get { return this; } }
public void SetVsync(bool state)
{
//IGraphicsContext curr = global::OpenTK.Graphics.GraphicsContext.CurrentContext;
GLControl.MakeCurrent();
GLControl.VSync = state;
//Owner.MakeContextCurrent(curr, Owner.NativeWindowsForContexts[curr]);
}
public void Begin()
{
if (!GLControl.Context.IsCurrent)
Owner.MakeContextCurrent(GLControl.Context, GLControl.WindowInfo);
}
public void End()
{
Owner.MakeDefaultCurrent();
}
public new void SwapBuffers()
{
if (!GLControl.Context.IsCurrent)
MakeCurrent();
base.SwapBuffers();
}
}
}