Пример #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
        }
Пример #2
0
		public static GRGlInterface AssembleGlInterface (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_gl_interface (ptr, del));
			GRGlGetProcDelegateContext.Free (ptr);
			return glInterface;
		}
Пример #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);
        }
Пример #4
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);
        }
Пример #5
0
        private static IntPtr GrGLGetProcInternal(IntPtr context, string name)
        {
            var ctx = GRGlGetProcDelegateContext.Unwrap(context);

            return(ctx.GetProc(ctx.Context, name));
        }
Пример #6
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
		}