void GLES2FBOMultiRenderTarget::bindSurfaceImpl(size_t attachment, RenderTexture *target) { /// Check if the render target is in the rendertarget->FBO map GLES2FrameBufferObject *fbobj = 0; target->getCustomAttribute("FBO", &fbobj); assert(fbobj); fbo.bindSurface(attachment, fbobj->getSurface(0)); GL_CHECK_ERROR; // Initialise? // Set width and height mWidth = fbo.getWidth(); mHeight = fbo.getHeight(); }
void GLES2FBOManager::bind(RenderTarget *target) { /// Check if the render target is in the rendertarget->FBO map GLES2FrameBufferObject *fbo = 0; target->getCustomAttribute("FBO", &fbo); if(fbo) fbo->bind(); else // Old style context (window/pbuffer) or copying render texture #if OGRE_PLATFORM == OGRE_PLATFORM_APPLE_IOS // The screen buffer is 1 on iOS glBindFramebuffer(GL_FRAMEBUFFER, 1); #else glBindFramebuffer(GL_FRAMEBUFFER, 0); #endif GL_CHECK_ERROR; }
void GLES2FBOManager::bind(RenderTarget *target) { // Check if the render target is in the rendertarget->FBO map GLES2FrameBufferObject *fbo = 0; target->getCustomAttribute("FBO", &fbo); if(fbo) fbo->bind(); // Old style context (window/pbuffer) or copying render texture #if OGRE_PLATFORM == OGRE_PLATFORM_APPLE_IOS else { // Non-multisampled screen buffer is FBO #1 on iOS, multisampled is yet another, // so give the target ability to influence decision which FBO to use GLuint glfbo = 0; target->getCustomAttribute("GLFBO", &glfbo); OGRE_CHECK_GL_ERROR(glBindFramebuffer(GL_FRAMEBUFFER, glfbo)); } #else else