Esempio n. 1
0
        public RenderTarget2D(GraphicsDevice graphicsDevice, int width, int height, bool mipMap, SurfaceFormat preferredFormat, DepthFormat preferredDepthFormat, int preferredMultiSampleCount, RenderTargetUsage usage)
            : base(graphicsDevice, width, height, mipMap, preferredFormat, true)
        {
            RenderTarget2D renderTarget2D = this;

            this.DepthStencilFormat = preferredDepthFormat;
            this.MultiSampleCount   = preferredMultiSampleCount;
            this.RenderTargetUsage  = usage;
            if (preferredDepthFormat == DepthFormat.None)
            {
                return;
            }
            Threading.BlockOnUIThread((Action)(() =>
            {
                GraphicsExtensions.GenRenderbuffers(1, out renderTarget2D.glDepthStencilBuffer);
                GraphicsExtensions.BindRenderbuffer(RenderbufferTarget.Renderbuffer, renderTarget2D.glDepthStencilBuffer);
                RenderbufferStorage local_0 = RenderbufferStorage.DepthComponent16;
                switch (preferredDepthFormat)
                {
                case DepthFormat.Depth24Stencil8:
                    local_0 = RenderbufferStorage.Depth24Stencil8;
                    break;

                case DepthFormat.Depth24:
                    local_0 = RenderbufferStorage.DepthComponent24;
                    break;

                case DepthFormat.Depth16:
                    local_0 = RenderbufferStorage.DepthComponent16;
                    break;
                }
                GraphicsExtensions.RenderbufferStorage(RenderTarget2D.GLRenderbuffer, local_0, renderTarget2D.width, renderTarget2D.height);
            }));
        }