protected override void Dispose(bool manual)
 {
     if (m_RenderBuffer != null)
     {
         base.Bind();
         m_RenderBuffer.Unbind();
         DetachRenderBuffer(m_RenderBuffer, FramebufferAttachment.DepthAttachment);
         m_RenderBuffer.Dispose();
         m_RenderBuffer = null;
         base.Unbind();
     }
     if (m_Texture != null)
     {
         base.Bind();
         m_Texture.Unbind();
         DetachTexture(m_Texture, FramebufferAttachment.ColorAttachment0);
         m_Texture.Dispose();
         m_Texture = null;
         base.Unbind();
     }
     base.Dispose(manual);
 }
        public RenderToTextureBuffer(int width, int height, bool addDepthBuffer, int multisamplingSamples) : base()
        {
            base.Bind();
            m_Texture = new Texture();
            if (multisamplingSamples > 0)
            {
                m_Texture.TextureType          = TextureTarget.Texture2DMultisample;
                m_Texture.MultisamplingSamples = multisamplingSamples;
            }
            m_Texture.Create(width, height, TextureMinFilter.Nearest, TextureMagFilter.Nearest);
            AttachTexture(m_Texture, FramebufferAttachment.ColorAttachment0);
            if (addDepthBuffer)
            {
                m_RenderBuffer = new RenderBuffer(width, height, multisamplingSamples);
                AttachRenderBuffer(m_RenderBuffer, FramebufferAttachment.DepthAttachment);
                m_RenderBuffer.Unbind();
            }
            m_Texture.Unbind();

            base.Unbind();
        }