Exemple #1
0
        public static GRGlInterface AssembleInterface(object context, GRGlGetProcDelegate get)
        {
#if DESKTOP || WINDOWS_UWP
            var angle = AssembleAngleInterface(context, get);
#endif
            // always use ANGLE on UWP
#if WINDOWS_UWP
            return(angle);
#else
            // first try ANGLE on Desktop
#if DESKTOP
            if (angle != null)
            {
                return(angle);
            }
#endif
            // always use the default on non-Windows
            var del = Marshal.GetFunctionPointerForDelegate(getProcDelegate);

            var ctx         = new GRGlGetProcDelegateContext(context, get);
            var ptr         = ctx.Wrap();
            var glInterface = GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_interface(ptr, del));
            GRGlGetProcDelegateContext.Free(ptr);
            return(glInterface);
#endif
        }
Exemple #2
0
		public static GRGlInterface AssembleGlesInterface (object context, GRGlGetProcDelegate get)
		{
			var del = Marshal.GetFunctionPointerForDelegate (getProcDelegate);

			var ctx = new GRGlGetProcDelegateContext (context, get);
			var ptr = ctx.Wrap ();
			var glInterface = GetObject<GRGlInterface> (SkiaApi.gr_glinterface_assemble_gles_interface (ptr, del));
			GRGlGetProcDelegateContext.Free (ptr);
			return glInterface;
		}
Exemple #3
0
        public static GRGlInterface AssembleGlesInterface(object context, GRGlGetProcDelegate get)
        {
            var del = Marshal.GetFunctionPointerForDelegate(getProcDelegate);

            var ctx         = new GRGlGetProcDelegateContext(context, get);
            var ptr         = ctx.Wrap();
            var glInterface = GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_gles_interface(ptr, del));

            GRGlGetProcDelegateContext.Free(ptr);
            return(glInterface);
        }
Exemple #4
0
        public static GRGlInterface AssembleGlInterface(object context, GRGlGetProcDelegate get)
        {
            var del = get != null && context != null
                                ? new GRGlGetProcDelegate((_, name) => get(context, name))
                                : get;
            var proxy = DelegateProxies.Create(del, DelegateProxies.GRGlGetProcDelegateProxy, out var gch, out var ctx);

            try {
                return(GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_gl_interface(ctx, proxy)));
            } finally {
                gch.Free();
            }
        }
Exemple #5
0
        public static GRGlInterface AssembleInterface(object context, GRGlGetProcDelegate get)
        {
            // if on Windows, try ANGLE
            if (PlatformConfiguration.IsWindows)
            {
                var angle = AssembleAngleInterface(context, get);
                if (angle != null)
                {
                    return(angle);
                }
            }

            // try the native default
            using (var ctx = new NativeDelegateContext(context, get)) {
                return(GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_interface(ctx.NativeContext, getProcDelegate)));
            }
        }
Exemple #6
0
        public static GRGlInterface AssembleInterface(object context, GRGlGetProcDelegate get)
        {
            // if on Windows, try ANGLE
            if (PlatformConfiguration.IsWindows)
            {
                var angle = AssembleAngleInterface(context, get);
                if (angle != null)
                {
                    return(angle);
                }
            }

            // try the native default
            var del = Marshal.GetFunctionPointerForDelegate(getProcDelegate);

            var ctx         = new GRGlGetProcDelegateContext(context, get);
            var ptr         = ctx.Wrap();
            var glInterface = GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_interface(ptr, del));

            GRGlGetProcDelegateContext.Free(ptr);
            return(glInterface);
        }
Exemple #7
0
        public static GRGlInterface AssembleInterface(object context, GRGlGetProcDelegate get)
        {
            // if on Windows, try ANGLE
            if (PlatformConfiguration.IsWindows)
            {
                var angle = AssembleAngleInterface(context, get);
                if (angle != null)
                {
                    return(angle);
                }
            }

            // try the native default
            var del = get != null && context != null
                                ? new GRGlGetProcDelegate((_, name) => get(context, name))
                                : get;
            var proxy = DelegateProxies.Create(del, DelegateProxies.GRGlGetProcDelegateProxy, out var gch, out var ctx);

            try {
                return(GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_interface(ctx, proxy)));
            } finally {
                gch.Free();
            }
        }
		public static GRGlInterface AssembleInterface (object context, GRGlGetProcDelegate get)
		{
#if DESKTOP || WINDOWS_UWP
			var angle = AssembleAngleInterface (context, get);
#endif
			// always use ANGLE on UWP
#if WINDOWS_UWP
			return angle;
#else
			// first try ANGLE on Desktop
#if DESKTOP
			if (angle != null)
				return angle;
#endif
			// always use the default on non-Windows
			var del = Marshal.GetFunctionPointerForDelegate (getProcDelegate);

			var ctx = new GRGlGetProcDelegateContext (context, get);
			var ptr = ctx.Wrap ();
			var glInterface = GetObject<GRGlInterface> (SkiaApi.gr_glinterface_assemble_interface (ptr, del));
			GRGlGetProcDelegateContext.Free (ptr);
			return glInterface;
#endif
		}
Exemple #9
0
 public static GRGlInterface AssembleGlInterface(GRGlGetProcDelegate get)
 {
     return(AssembleGlInterface(null, get));
 }
Exemple #10
0
 public static GRGlInterface AssembleAngleInterface(object context, GRGlGetProcDelegate get)
 {
     // ANGLE is just a GLES v2 over DX v9+
     return(AssembleGlesInterface(context, get));
 }
Exemple #11
0
 public static GRGlInterface AssembleGlesInterface(object context, GRGlGetProcDelegate get) =>
 CreateGles(name => get(context, name));
Exemple #12
0
 public static GRGlInterface AssembleGlesInterface(GRGlGetProcDelegate get) =>
 CreateGles(name => get(null, name));
Exemple #13
0
 public static GRGlInterface AssembleGlesInterface(object context, GRGlGetProcDelegate get)
 {
     using (var ctx = new NativeDelegateContext(context, get)) {
         return(GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_gles_interface(ctx.NativeContext, getProcDelegate)));
     }
 }
		public static GRGlInterface AssembleAngleInterface (object context, GRGlGetProcDelegate get)
		{
			// ANGLE is just a GLES v2 over DX v9+
			return AssembleGlesInterface (context, get);
		}
Exemple #15
0
 public GRGlGetProcDelegateContext(object context, GRGlGetProcDelegate get)
 {
     Context = context;
     GetProc = get;
 }
			public GRGlGetProcDelegateContext (object context, GRGlGetProcDelegate get)
			{
				Context = context;
				GetProc = get;
			}
		public static GRGlInterface AssembleAngleInterface (GRGlGetProcDelegate get)
		{
			return AssembleAngleInterface (null, get);
		}