Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        public void GetData()
        {
            if (this.hasrun == false) { return; }

            while (!this.context.CurrentDeviceContext.IsDataAvailable(this.query)) { }

            this.Statistics = this.context.CurrentDeviceContext.GetData<StreamOutputStatistics>(this.query);
        }
Exemplo n.º 3
0
        public void GetData()
        {
            if (this.hasrun == false)
            {
                return;
            }

            while (!this.context.CurrentDeviceContext.IsDataAvailable(this.query))
            {
            }

            this.Statistics = this.context.CurrentDeviceContext.GetData <StreamOutputStatistics>(this.query);
        }
Exemplo n.º 4
0
        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;
                }
            }
        }