コード例 #1
0
ファイル: Context.cs プロジェクト: zeta1999/Vrmac
        void render()
        {
            // ConsoleLogger.logDebug( "ContentBase.render" );
            var rtv = swapChain?.GetCurrentBackBufferRTV();

            Debug.Assert(null != rtv);
            ComUtils.assign(ref cachedRtv, rtv);
            var dsv = swapChain?.GetDepthBufferDSV();

            Debug.Assert(null != dsv);
            ComUtils.assign(ref cachedDsv, dsv);
            if (null == rtv || null == dsv)
            {
                return;
            }

            animation?.update();
            // ConsoleLogger.logDebug( "ContentBase.render 2" );
            backBufferTexture = rtv;
            try
            {
                // MicroProfiler.start();
                scene.render(this, rtv, dsv);
                m_cursor?.render();

                string screenshot = System.Threading.Interlocked.Exchange(ref screenshotLocation, null);
                if (null != screenshot)
                {
                    using (var dev = device)
                        using (var tx = rtv.GetTexture())
                            ScreenGrabber.saveTexture(dev, context, tx, screenshot);
                }
                // MicroProfiler.key( "done rendering" );
            }
            finally
            {
                backBufferTexture = null;
            }
            swapChain.Present(1);
            // MicroProfiler.finish();
        }