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(); }
public void saveFrame(IRenderDevice device, IDeviceContext context, ITexture texture) { ScreenGrabber.saveTexture(device, context, texture, framePath()); }