Мы пытаемся выяснить, почему у нас относительно медленный FPS на iphone 4 и ipad 1. Мы видим эту категорию предупреждения в нашем открытом анализе GL: логическая загрузка буфера. Резюме: "Медленная загрузка фреймбуфера". В рекомендации говорится, что фреймбуфер должен быть загружен графическим процессором перед рендерингом. Он рекомендует, чтобы мы не выполняли полноэкранную операцию очистки в начале каждого кадра. Однако мы делаем это с помощью glClear.
[EAGLContext setCurrentContext:_context];
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFramebuffer);
glClear(GL_COLOR_BUFFER_BIT);
// Our OpenGL Drawing Occurs here
... ... ...
// hint to opengl to not bother with this buffer
const GLenum discards[] = {GL_DEPTH_ATTACHMENT};
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFramebuffer);
glDiscardFramebufferEXT(GL_FRAMEBUFFER, 1, discards);
// present render
[_context presentRenderbuffer:GL_RENDERBUFFER];
На самом деле мы не используем буфер глубины или трафарета.
Это происходит, когда мы визуализируем текстуры как плитки, и это происходит каждый раз, когда мы загружаем новую плитку. Он указывает на команду glDrawArrays.
Любые рекомендации о том, как мы можем избавиться от этого предупреждения?
Если это вообще помогает, так мы настраиваем слой:
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGB565, kEAGLDrawablePropertyColorFormat,
nil];