public void Draw(GraphicsDevice device) { PostProcessor postprocessor = PostProcessor.GetInstance(device); device.SetRenderTargets(postprocessor.color_rt, postprocessor.depth_rt); device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer | ClearOptions.Stencil, Application.CLEAR_COLOR, 1.0f, 0); device.BlendState = BlendState.Opaque; device.DepthStencilState = DepthStencilState.Default; level.Draw3dEntities(device, camera); postprocessor.DepthOfField(postprocessor.color_rt, postprocessor.result_rt, postprocessor.depth_rt, camera, DepthOfFieldType.DiscBlur, player.position.Z, 5, total_time); device.SetRenderTarget(postprocessor.color_rt); device.Clear(ClearOptions.Target, Application.CLEAR_COLOR, 1, 0); device.BlendState = BlendState.AlphaBlend; level.Draw2dEntities(device, camera); device.DepthStencilState = DepthStencilState.DepthRead; particlemanager.Draw(device, camera); device.DepthStencilState = DepthStencilState.Default; level.DrawBubbleReflections(device, camera); device.SetRenderTargets(postprocessor.result_rt); SpriteRenderer spriterenderer = SpriteRenderer.GetInstance(device); spriterenderer.Begin(null); spriterenderer.Add(new TextureRegion(postprocessor.color_rt, 0, 0, postprocessor.color_rt.Width, postprocessor.color_rt.Height), Color.White, 0, 0, postprocessor.color_rt.Width, postprocessor.color_rt.Height, 0); spriterenderer.End(); }