OpenGL notes


1. Enable stencil butter in OpenGL ES

http://stackoverflow.com/questions/2621013/how-to-create-a-fbo-with-stencil-buffer-in-opengl-es-2-0


if (m_context && !m_defaultFramebuffer)

   {

      [EAGLContext setCurrentContext:m_context];

      

      glGenFramebuffers(1, &m_defaultFramebuffer);

      glBindFramebuffer(GL_FRAMEBUFFER, m_defaultFramebuffer);

      

      glGenRenderbuffers(1, &m_colorRenderbuffer);

      glBindRenderbuffer(GL_RENDERBUFFER, m_colorRenderbuffer);

      

      [m_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer];

      

      glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &m_framebufferWidth);

      glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &m_framebufferHeight);

      

      glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_colorRenderbuffer);

    

       GLuint stencilRenderbuffer;

       glGenRenderbuffers(1, &stencilRenderbuffer);

       glBindRenderbuffer(GL_RENDERBUFFER, stencilRenderbuffer);

       glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8_OES, m_framebufferWidth, m_framebufferHeight);

       glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, stencilRenderbuffer);

       glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, stencilRenderbuffer);

      

      if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)

      {

         NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER));

      }

   }


你可能感兴趣的:(OpenGL notes)