/// <summary> /// Create and insert a fence into the GPU pipeline /// </summary> public static GPUFence Create(SynchronizationHint synchronizationHint) { #if UNITY_EDITOR return(new FlushFence(synchronizationHint)); #elif UNITY_ANDROID return(new GLESFence(synchronizationHint)); #elif UNITY_IOS return(new MTLFence(synchronizationHint)); // We don't support GLES on iOS #else return(new FlushFence(synchronizationHint)); #endif }
public FlushFence(SynchronizationHint synchronizationHint) : base(synchronizationHint) { }
private static extern void GPUFenceSync(SynchronizationHint syncHint, SyncDelegate handler, IntPtr context);
public MTLFence(SynchronizationHint synchronizationHint) : base(synchronizationHint) { var weakSelf = (IntPtr)GCHandle.Alloc(this, GCHandleType.Weak); GPUFenceSync(synchronizationHint, OnSync, weakSelf); }
public GLESFence(SynchronizationHint hint) : base(hint) { dispatcher = Dispatcher.Create(DispatchThread.RenderThread); fence = new AndroidJavaObject("com.yusufolokoba.natrender.GPUFence", (int)hint); DispatchUtility.onFrame += CheckForCompletion; }
protected GPUFence(SynchronizationHint synchronizationHint) { this.synchronizationHint = synchronizationHint; }