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 }
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; }
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); }
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(); } }
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))); } }
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); }
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 }
public static GRGlInterface AssembleGlInterface(GRGlGetProcDelegate get) { return(AssembleGlInterface(null, get)); }
public static GRGlInterface AssembleAngleInterface(object context, GRGlGetProcDelegate get) { // ANGLE is just a GLES v2 over DX v9+ return(AssembleGlesInterface(context, get)); }
public static GRGlInterface AssembleGlesInterface(object context, GRGlGetProcDelegate get) => CreateGles(name => get(context, name));
public static GRGlInterface AssembleGlesInterface(GRGlGetProcDelegate get) => CreateGles(name => get(null, name));
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); }
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); }