В OpenGL текстура загружается в видеопамять из оперативной, намного проще просто не удалять исходную текстуру из памяти.
Есть смысл из OpenGL выгружать фреймбуфер как результат работы какого-то шейдера, тогда это просто делается функциями:
glBindFramebuffer(GL_FRAMEBUFFER_EXT, framebuffer->id);
glBindTexture(GL_TEXTURE_2D, framebuffer->image->id);
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
GLubyte* img = (GLubyte*) malloc(framebuffer->w * framebuffer->h * sizeof(GLubyte) * 3);
glReadPixels(0, 0, framebuffer->w, framebuffer->h, GL_RGB, GL_UNSIGNED_BYTE, img);
img - заранее созданный массив необходимой длины. Надо заметить, что этот способ очень медленный и годится только для разовой выгрузки текстуры.
Для iOS смысл тот же, просто функции меняются на *OES.