title: opengl gbuffer use GL_TEXTURE_2D_MULTISAMPLE texture issues
body: <p>i first render scene into gbuffer(position,normal,<em>color</em>),but in deferred render pass the <em>color</em> texture was jittering all the time, so i want to change the <em>color</em> texture to GL_TEXTURE_2D_MULTISAMPLE,like below, but it failed, why?</p>
  
  <pre><code>enum _GL_GBUFFER_TEXTURE_TYPE_ { _position_, _normal_, _albedo_spec_,_texture_cnt_ };
  bool initialize(int2 dim){
          dim2 = dim;
  
          //gbuffer
          glGenFramebuffers(1, &amp;gBuffer);
          glBindFramebuffer(GL_FRAMEBUFFER, gBuffer);
  
          //position texture
          glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + _position_, GL_TEXTURE_2D,
                                               textures[_position_].create2d(dim2, GL_RGBA32F/*GL_RGB16F*/, GL_RGBA/*GL_RGB*/, GL_FLOAT, NULL), 0);
          //normal texture
          glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + _normal_, GL_TEXTURE_2D,
                                                textures[_normal_].create2d(dim2, GL_RGBA32F/*GL_RGB16F*/, GL_RGBA/*GL_RGB*/, GL_FLOAT, NULL), 0);
          //color texture
          glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + _albedo_spec_, GL_TEXTURE_2D_MULTISAMPLE,
                                                textures[_albedo_spec_].create2d_msaa(dim2,GL_RGBA8,8), 0);
                                                //textures[_albedo_spec_].create2d(dim2,GL_RGBA,GL_RGBA,GL_UNSIGNED_BYTE,NULL),0);
  
          //tell OpenGL which color attachments we'll use (of this framebuffer) for rendering 
          GLuint attachments[_texture_cnt_]; 
          for (int i = 0; i &lt; _texture_cnt_; i++) attachments[i] = GL_COLOR_ATTACHMENT0 + i;
          glDrawBuffers(_texture_cnt_, attachments);
  
          //create and attach depth buffer (renderbuffer)
          glGenRenderbuffers(1, &amp;rboDepth);
          glBindRenderbuffer(GL_RENDERBUFFER, rboDepth);
          glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, dim2.x, dim2.y);
          glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rboDepth);
  
          //finally check if framebuffer is complete
          if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE){
              std::cout &lt;&lt; "[GBuffer] : Framebuffer not complete!" &lt;&lt; std::endl;
              return false;
          }
          glBindFramebuffer(GL_FRAMEBUFFER, 0);
          glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
          return true;
      }
  </code></pre>