public void Unbind(Renderer renderer) { var lastRenderTarget = _lastRenderTarget.Get(renderer); if (lastRenderTarget != null) { renderer.ActiveRenderTarget = lastRenderTarget; lastRenderTarget.Bind(renderer); } else { renderer.ActiveRenderTarget = null; renderer.DeviceContext.OutputMerger.SetTargets((RenderTargetView)null); } Query query = _query.Get(renderer); if (query != null) { renderer.DeviceContext.End(query); while (!renderer.DeviceContext.IsDataAvailable(query)) { // wait for GPU } StreamOutputStatistics stats = renderer.DeviceContext.GetData <StreamOutputStatistics>(query); this.NumPrimitivesWritten = stats.NumPrimitivesWritten; this.PrimitivesStorageNeeded = stats.PrimitivesStorageNeeded; } renderer.DeviceContext.StreamOutput.SetTargets(null); }
public void GetData() { if (this.hasrun == false) { return; } while (!this.context.CurrentDeviceContext.IsDataAvailable(this.query)) { } this.Statistics = this.context.CurrentDeviceContext.GetData<StreamOutputStatistics>(this.query); }
public void GetData() { if (this.hasrun == false) { return; } while (!this.context.CurrentDeviceContext.IsDataAvailable(this.query)) { } this.Statistics = this.context.CurrentDeviceContext.GetData <StreamOutputStatistics>(this.query); }
public void GetData(RenderContext context) { if (this.hasrun == false) { return; } for (int i = 0; i < WAIT_MAX; i++) { if (context.Context.IsDataAvailable(this.query)) { this.Statistics = context.Context.GetData <StreamOutputStatistics>(this.query); return; } } }