Esempio n. 1
0
            public ScratchRenderTarget(RenderCoordinator coordinator, UIContext context)
            {
                Context = context;
                int width  = (int)(context.CanvasSize.X * context.ScratchScaleFactor),
                    height = (int)(context.CanvasSize.Y * context.ScratchScaleFactor);

                Instance = new AutoRenderTarget(
                    coordinator, width, height,
                    false, Context.ScratchSurfaceFormat, DepthFormat.Depth24Stencil8
                    );
            }
Esempio n. 2
0
        public override void Issue(DeviceManager manager)
        {
            var single = Single;

            if (SingleAuto != null)
            {
                single = SingleAuto.Get();
            }

            var isValid = true;

            if (Multiple != null)
            {
                foreach (var rt in Multiple)
                {
                    if (!AutoRenderTarget.IsRenderTargetValid(rt.RenderTarget))
                    {
                        isValid = false;
                    }
                }

                if (!isValid)
                {
                    if (IgnoreInvalidRenderTargets)
                    {
                        MarkAsIssued();
                        return;
                    }
                    else
                    {
                        throw new ObjectDisposedException("Invalid render target for batch group " + Name);
                    }
                }

                manager.PushRenderTargets(Multiple);
            }
            else
            {
                if (single != null && (!AutoRenderTarget.IsRenderTargetValid(single)))
                {
                    isValid = false;
                }

                if (!isValid)
                {
                    if (IgnoreInvalidRenderTargets)
                    {
                        MarkAsIssued();
                        return;
                    }
                    else
                    {
                        throw new ObjectDisposedException("Invalid render target for batch group " + Name);
                    }
                }

                manager.PushRenderTarget(single);
            }

            try {
                base.Issue(manager);
            } finally {
                manager.PopRenderTarget();
            }
        }