void GLES2FrameBufferObject::attachDepthBuffer( DepthBuffer *depthBuffer ) { GLES2DepthBuffer *glDepthBuffer = static_cast<GLES2DepthBuffer*>(depthBuffer); glBindFramebuffer(GL_FRAMEBUFFER, mMultisampleFB ? mMultisampleFB : mFB ); GL_CHECK_ERROR; if( glDepthBuffer ) { GLES2RenderBuffer *depthBuf = glDepthBuffer->getDepthBuffer(); GLES2RenderBuffer *stencilBuf = glDepthBuffer->getStencilBuffer(); //Attach depth buffer, if it has one. if( depthBuf ) depthBuf->bindToFramebuffer( GL_DEPTH_ATTACHMENT, 0 ); //Attach stencil buffer, if it has one. if( stencilBuf ) stencilBuf->bindToFramebuffer( GL_STENCIL_ATTACHMENT, 0 ); } else { glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0); GL_CHECK_ERROR; glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0); GL_CHECK_ERROR; } }
void GLES2FrameBufferObject::attachDepthBuffer( DepthBuffer *depthBuffer ) { bind(true); // recreate FBO if unusable with current context, bind it GLES2DepthBuffer *glDepthBuffer = static_cast<GLES2DepthBuffer*>(depthBuffer); if( glDepthBuffer ) { GLES2RenderBuffer *depthBuf = glDepthBuffer->getDepthBuffer(); GLES2RenderBuffer *stencilBuf = glDepthBuffer->getStencilBuffer(); //Attach depth buffer, if it has one. if( depthBuf ) depthBuf->bindToFramebuffer( GL_DEPTH_ATTACHMENT, 0 ); //Attach stencil buffer, if it has one. if( stencilBuf ) stencilBuf->bindToFramebuffer( GL_STENCIL_ATTACHMENT, 0 ); } else { OGRE_CHECK_GL_ERROR(glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0)); OGRE_CHECK_GL_ERROR(glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0)); } }