¿Cómo evito un almacenamiento intermedio lógico con el framebuffer de GLKView?

Ejecutar el diagnóstico de OpenGL ES de Xcode en una aplicación muy simple que cambia a un segundo framebuffer y back (con el uso apropiado de glClear y glInvalidateFramebuffer) muestra advertencias sobre un almacén de almacenamiento lógico al cambiar al segundo framebuffer:

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect { // At this point, GLKView's framebuffer is bound // Clear (to avoid logical buffer load) glClear(GL_COLOR_BUFFER_BIT); // Invalidate (to avoid logical buffer store) glInvalidateFramebuffer(GL_FRAMEBUFFER, 1, (GLenum[]){ GL_COLOR_ATTACHMENT0 }); // Switch to our own framebuffer, and attach a texture as the color attachment // At this point, Xcode's OpenGL ES tool warns: // "For best performance keep logical buffer store operations to a minimum." glBindFramebuffer(GL_FRAMEBUFFER, _framebuffer); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _texture, 0); // Clear (to avoid logical buffer load) glClear(GL_COLOR_BUFFER_BIT); // Invalidate (to avoid logical buffer store) glInvalidateFramebuffer(GL_FRAMEBUFFER, 1, (GLenum[]){ GL_COLOR_ATTACHMENT0 }); // Might want to switch back to GLKView's drawable here, and do more rendering } 

¿Alguien tiene ideas sobre por qué el inválido no se está apoderando? Tenga en count que en este ejemplo, el GLKView solo tiene un file adjunto de búfer de color:

  view.drawableColorFormat = GLKViewDrawableColorFormatRGBA8888; view.drawableStencilFormat = GLKViewDrawableStencilFormatNone; view.drawableDepthFormat = GLKViewDrawableDepthFormatNone; view.drawableMultisample = GLKViewDrawableMultisampleNone; 

Pruebe la aplicación demostrando esto en https://dl.dropboxusercontent.com/u/6956432/test.zip

¡Aclamaciones!