コード例 #1
0
        static CVReturn OutputCallback(IntPtr displayLink, ref CVTimeStamp inNow, ref CVTimeStamp inOutputTime, CVOptionFlags flagsIn, ref CVOptionFlags flagsOut, IntPtr displayLinkContext)
        {
            GCHandle callbackHandle        = GCHandle.FromIntPtr(displayLinkContext);
            DisplayLinkOutputCallback func = (DisplayLinkOutputCallback)callbackHandle.Target;
            CVDisplayLink             delegateDisplayLink = new CVDisplayLink(displayLink, false);

            return(func(delegateDisplayLink, ref inNow, ref inOutputTime, flagsIn, ref flagsOut));
        }
コード例 #2
0
        private void SetupDisplayLink()
        {
            if (displayLink != null)
                return;

            // Create a display link capable of being used with all active displays
            displayLink = new CVDisplayLink ();

            // Set the renderer output callback function
            displayLink.SetOutputCallback (MyDisplayLinkOutputCallback);

            // Set the display link for the current renderer
            CGLContext cglContext = openGLContext.CGLContext;
            CGLPixelFormat cglPixelFormat = PixelFormat.CGLPixelFormat;
            displayLink.SetCurrentDisplay (cglContext, cglPixelFormat);
        }
コード例 #3
0
        // Private Callback function for CVDisplayLink
        private CVReturn MyDisplayLinkOutputCallback(CVDisplayLink displayLink, ref CVTimeStamp inNow, ref CVTimeStamp inOutputTime, CVOptionFlags flagsIn, ref CVOptionFlags flagsOut)
        {
            //CVReturn result = GetFrameForTime (inOutputTime);
            CVReturn result = CVReturn.Error;

            // There is no autorelease pool when this method is called because it will be called from a background thread
            // It's important to create one or you will leak objects
            using (NSAutoreleasePool pool = new NSAutoreleasePool ()) {
                // Update the animation
                BeginInvokeOnMainThread (RenderScene);
                result = CVReturn.Success;
            }

            return result;
        }
コード例 #4
0
 // Clean up the notifications
 private void DeAllocate()
 {
     Stop ();
     displayLink = null;
     NSNotificationCenter.DefaultCenter.RemoveObserver (notificationProxy);
 }
コード例 #5
0
		static CVReturn OutputCallback (IntPtr displayLink, ref CVTimeStamp inNow, ref CVTimeStamp inOutputTime, CVOptionFlags flagsIn, ref CVOptionFlags flagsOut, IntPtr displayLinkContext)
		{
			GCHandle callbackHandle = GCHandle.FromIntPtr (displayLinkContext);
			DisplayLinkOutputCallback func = (DisplayLinkOutputCallback) callbackHandle.Target;
			CVDisplayLink delegateDisplayLink = new CVDisplayLink(displayLink, false);
			return func (delegateDisplayLink, ref inNow, ref inOutputTime, flagsIn, ref flagsOut);
		}