protected override void Resize(int newWidth, int newHeight) { Debug.Assert(newWidth > 0 && newHeight > 0); FrameBufferObject.Bind(); BufferWidth = newWidth; BufferHeight = newHeight; PositionAttachment.Resize(BufferWidth, BufferHeight); ColorAttachment.Resize(BufferWidth, BufferHeight); NormalAttachment.Resize(BufferWidth, BufferHeight); DepthAttachment.Resize(BufferWidth, BufferHeight); GL.FramebufferTexture2D(FramebufferTarget.DrawFramebuffer, FramebufferAttachment.ColorAttachment0, TextureTarget.Texture2DMultisample, PositionAttachment.GetTextureObject, 0); GL.FramebufferTexture2D(FramebufferTarget.DrawFramebuffer, FramebufferAttachment.ColorAttachment1, TextureTarget.Texture2DMultisample, ColorAttachment.GetTextureObject, 0); GL.FramebufferTexture2D(FramebufferTarget.DrawFramebuffer, FramebufferAttachment.ColorAttachment2, TextureTarget.Texture2DMultisample, NormalAttachment.GetTextureObject, 0); GL.FramebufferTexture2D(FramebufferTarget.DrawFramebuffer, FramebufferAttachment.DepthStencilAttachment, TextureTarget.Texture2DMultisample, DepthAttachment.GetTextureObject, 0); var status = GL.CheckFramebufferStatus(FramebufferTarget.Framebuffer); Debug.Assert(status == FramebufferErrorCode.FramebufferComplete); FrameBufferObject.Unbind(); }
protected virtual void Resize(int newWidth, int newHeight) { Debug.Assert(newWidth > 0 && newHeight > 0); using (var dummy = new ScopedFrameBufferBound(FrameBufferObject)) { BufferWidth = newWidth; BufferHeight = newHeight; PositionAttachment.Resize(BufferWidth, BufferHeight); ColorAttachment.Resize(BufferWidth, BufferHeight); NormalAttachment.Resize(BufferWidth, BufferHeight); MotionAttachment.Resize(BufferWidth, BufferHeight); DepthAttachment.Resize(BufferWidth, BufferHeight); GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment0, TextureTarget.Texture2D, PositionAttachment.GetTextureObject, 0); GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment1, TextureTarget.Texture2D, ColorAttachment.GetTextureObject, 0); GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment2, TextureTarget.Texture2D, NormalAttachment.GetTextureObject, 0); GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment3, TextureTarget.Texture2D, MotionAttachment.GetTextureObject, 0); GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.DepthAttachment, TextureTarget.Texture2D, DepthAttachment.GetTextureObject, 0); //GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.DepthStencilAttachment, TextureTarget.Texture2D, DepthAttachment.GetTextureObject, 0); var status = GL.CheckFramebufferStatus(FramebufferTarget.Framebuffer); Debug.Assert(status == FramebufferErrorCode.FramebufferComplete); } }