コード例 #1
0
ファイル: RenderManager.cs プロジェクト: Anteru/renderdoc
        public void OpenCapture(string logfile)
        {
            if(Running)
                return;

            m_Logfile = logfile;

            LoadProgress = 0.0f;

            InitException = null;

            m_Thread = Helpers.NewThread(new ThreadStart(this.RunThread));
            m_Thread.Priority = ThreadPriority.Highest;
            m_Thread.Start();

            while (m_Thread.IsAlive && !Running) ;
        }
コード例 #2
0
ファイル: RenderManager.cs プロジェクト: Anteru/renderdoc
        private void RunThread()
        {
            try
            {
                ReplayRenderer renderer = CreateReplayRenderer();
                if(renderer != null)
                {
                    System.Diagnostics.Debug.WriteLine("Renderer created");

                    Running = true;

                    m_current = null;

                    while (Running)
                    {
                        lock (m_renderQueue)
                        {
                            if (m_renderQueue.Count > 0)
                            {
                                m_current = m_renderQueue[0];
                                m_renderQueue.RemoveAt(0);
                            }
                        }

                        if(m_current == null)
                        {
                            m_WakeupEvent.WaitOne(10);
                            continue;
                        }

                        if (m_current.method != null)
                        {
                            if (CatchExceptions)
                            {
                                try
                                {
                                    m_current.method(renderer);
                                }
                                catch (Exception ex)
                                {
                                    m_current.ex = ex;
                                }
                            }
                            else
                            {
                                m_current.method(renderer);
                            }
                        }

                        m_current.processed = true;
                        m_current = null;
                    }

                    lock (m_renderQueue)
                    {
                        foreach (var cmd in m_renderQueue)
                            cmd.processed = true;

                        m_renderQueue.Clear();
                    }

                    DestroyReplayRenderer(renderer);
                }
            }
            catch (ReplayCreateException ex)
            {
                InitException = ex;
            }
        }
コード例 #3
0
ファイル: RenderManager.cs プロジェクト: Anteru/renderdoc
        public void ConnectToRemoteServer(RemoteHost host)
        {
            InitException = null;

            try
            {
                m_Remote = StaticExports.CreateRemoteServer(host.Hostname, 0);
                m_RemoteHost = host;
                m_RemoteHost.Connected = true;
            }
            catch (ReplayCreateException ex)
            {
                InitException = ex;
            }
        }