示例#1
0
 /// <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
 }
示例#2
0
 public FlushFence(SynchronizationHint synchronizationHint) : base(synchronizationHint)
 {
 }
示例#3
0
 private static extern void GPUFenceSync(SynchronizationHint syncHint, SyncDelegate handler, IntPtr context);
示例#4
0
        public MTLFence(SynchronizationHint synchronizationHint) : base(synchronizationHint)
        {
            var weakSelf = (IntPtr)GCHandle.Alloc(this, GCHandleType.Weak);

            GPUFenceSync(synchronizationHint, OnSync, weakSelf);
        }
示例#5
0
 public GLESFence(SynchronizationHint hint) : base(hint)
 {
     dispatcher = Dispatcher.Create(DispatchThread.RenderThread);
     fence      = new AndroidJavaObject("com.yusufolokoba.natrender.GPUFence", (int)hint);
     DispatchUtility.onFrame += CheckForCompletion;
 }
示例#6
0
 protected GPUFence(SynchronizationHint synchronizationHint)
 {
     this.synchronizationHint = synchronizationHint;
 }