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); })); }