コード例 #1
0
        /// <summary>
        /// Render the background texture when called.
        /// </summary>
        /// <returns>Is background updated.</returns>
        public bool RenderBackgoundTextureOnDemand()
        {
            // if Background is not initialized we are not rendering
            if (m_videoOverlayRendererHandler == System.IntPtr.Zero)
            {
                return(false);
            }

            // render next frame to texture
            Tango.Common.RetCodes ret =
                (Tango.Common.RetCodes)TangoVideoOverlayAPI.VideoOverlayRenderFrame(m_videoOverlayRendererHandler,
                                                                                    m_backgroundTexture.GetNativeTextureID(),
                                                                                    m_backgroundTexture.width,
                                                                                    m_backgroundTexture.height);

            if (ret != Tango.Common.RetCodes.kCAPISuccess)
            {
                DebugLogger.WriteToLog(DebugLogger.EDebugLevel.DEBUG_ERROR,
                                       "Failed to render video overlay texture with error code:" + ret);
                return(false);
            }
                        #if (UNITY_EDITOR || UNITY_STANDALONE_OSX)
            //issue plugin event to render right after rendering thread finished rendering
            Plugin.IssuePluginEvent(Plugin.PluginEvents.RenderFrameEvent);
                        #elif (UNITY_IPHONE || UNITY_ANDROID)
            GL.InvalidateState();
                        #else
                        #error platform is not supported
                        #endif
            return(true);
        }
コード例 #2
0
        /// <summary>
        /// Render the latest frame.
        /// </summary>
        /// <param name="textureID"> Texture handle.</param>
        /// <param name="width"> Width of the texture.</param>
        /// <param name="height"> Height of the texture.</param>
        /// <param name="timestamp"> Timestamp to be filled out by the Tango API.</param>
        public static void RenderLatestFrame(int textureID, int width, int height, ref double timestamp)
        {
            if (!m_isInit)
            {
                DebugLogger.GetInstance.WriteToLog(DebugLogger.EDebugLevel.DEBUG_WARN,
                                                   "VideoOveralyProvider.RenderLatestFrame : Not Initialized!");
                return;
            }

            TangoVideoOverlayAPI.VideoOverlayRenderLatestFrame(TangoApplication.Instance.Handle,
                                                               textureID,
                                                               width,
                                                               height,
                                                               ref timestamp);
        }
コード例 #3
0
        /// <summary>
        /// Init the background texture at end of the frame.
        /// </summary>
        /// <returns>Yield return.</returns>
        private IEnumerator InitBackground()
        {
            // wait for end of frame to not interfere with rendering thread on mac
            yield return(new WaitForEndOfFrame());

            Synchronizer sync = gameObject.GetComponent <Synchronizer>();

            m_videoOverlayRendererHandler = TangoVideoOverlayAPI.VideoOverlayInitialize(sync.handler);
            if (m_videoOverlayRendererHandler == System.IntPtr.Zero)
            {
                DebugLogger.WriteToLog(DebugLogger.EDebugLevel.DEBUG_WARN, "Failed to initialize VideoOverlay");
            }
                        #if (UNITY_EDITOR || UNITY_STANDALONE_OSX)
            //issue plugin event to render right after rendering thread finished rendering
            Plugin.IssuePluginEvent(Plugin.PluginEvents.InitBackgroundEvent);
                        #elif (UNITY_IPHONE || UNITY_ANDROID)
            GL.InvalidateState();
                        #else
                        #error platform is not supported
                        #endif
        }
コード例 #4
0
        /// <summary>
        /// Render the background texture at the end of frame.
        /// </summary>
        /// <returns>Yield return.</returns>
        private IEnumerator RenderBackgoundTexture()
        {
            while (is_runningBackgroundRenderLoop)
            {
                // if Background is not initialized we are not rendering
                if (m_videoOverlayRendererHandler == System.IntPtr.Zero)
                {
                    yield return(null);
                }

                // wait for end of frame to not interfere with rendering thread on mac
                yield return(new WaitForEndOfFrame());

                // render next frame to texture
                Tango.Common.RetCodes ret = (Tango.Common.RetCodes)TangoVideoOverlayAPI.VideoOverlayRenderFrame(m_videoOverlayRendererHandler,
                                                                                                                m_backgroundTexture.GetNativeTextureID(),
                                                                                                                m_backgroundTexture.width,
                                                                                                                m_backgroundTexture.height);

                if (ret != Tango.Common.RetCodes.kCAPISuccess)
                {
                    DebugLogger.WriteToLog(DebugLogger.EDebugLevel.DEBUG_ERROR,
                                           "Failed to render video overlay texture with error code:" + ret);
                }

                                #if (UNITY_EDITOR || UNITY_STANDALONE_OSX)
                // issue plugin event to render right after rendering thread finished rendering
                Plugin.IssuePluginEvent(Plugin.PluginEvents.RenderFrameEvent);
                                #elif (UNITY_IPHONE || UNITY_ANDROID)
                GL.InvalidateState();
                                #else
                                #error platform is not supported
                                #endif
                // yield now to let class stop this coroutine if needed
                yield return(null);
            }
        }
コード例 #5
0
 /// <summary>
 /// Shutdown the video overlay provider.
 /// </summary>
 public static void Shutdown()
 {
     m_isInit = false;
     TangoVideoOverlayAPI.VideoOverlayShutdown(TangoApplication.Instance.Handle);
 }
コード例 #6
0
 /// <summary>
 /// Initialize the video overlay provider.
 /// </summary>
 public static void Init()
 {
     m_isInit = true;
     TangoVideoOverlayAPI.VideoOverlayInitialize(TangoApplication.Instance.Handle);
 }