Files
LuaCsForBarotraumaEP/Libraries/MonoGame.Framework/Src/MonoGame.Framework/Graphics/OpenGL.iOS.cs
T
2019-06-25 16:00:44 +03:00

89 lines
2.3 KiB
C#

// MonoGame - Copyright (C) The MonoGame Team
// This file is subject to the terms and conditions defined in
// file 'LICENSE.txt', which is part of this source code package.
using System;
using System.Runtime.InteropServices;
using ObjCRuntime;
using System.Security;
using OpenGLES;
using MonoGame.Utilities;
namespace MonoGame.OpenGL
{
internal partial class GL
{
public static IntPtr Library = FuncLoader.LoadLibrary("/System/Library/Frameworks/OpenGLES.framework/OpenGLES");
static partial void LoadPlatformEntryPoints()
{
BoundApi = RenderApi.ES;
}
private static T LoadFunction<T>(string function, bool throwIfNotFound = false)
{
return FuncLoader.LoadFunction<T>(Library, function, throwIfNotFound);
}
private static IGraphicsContext PlatformCreateContext (IWindowInfo info)
{
return new GraphicsContext ();
}
}
public class GraphicsContext : IGraphicsContext
{
public GraphicsContext ()
{
Context = new EAGLContext (EAGLRenderingAPI.OpenGLES2);
}
public bool IsCurrent {
get {
return EAGLContext.CurrentContext == this.Context;
}
}
public bool IsDisposed {
get {
return this.Context == null;
}
}
public int SwapInterval {
get {
throw new NotImplementedException ();
}
set {
throw new NotImplementedException ();
}
}
public void Dispose ()
{
if (this.Context != null) {
this.Context.Dispose ();
}
this.Context = null;
}
public void MakeCurrent (IWindowInfo info)
{
if (!EAGLContext.SetCurrentContext (this.Context)) {
throw new InvalidOperationException ("Unable to change current EAGLContext.");
}
}
public void SwapBuffers ()
{
if (!this.Context.PresentRenderBuffer (36161u)) {
throw new InvalidOperationException ("EAGLContext.PresentRenderbuffer failed.");
}
}
internal EAGLContext Context { get; private set; }
}
}