Подтвердить что ты не робот

Логическая загрузка буфера - медленная загрузка буфера кадров - ios

Мы пытаемся выяснить, почему у нас относительно медленный 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];
4b9b3361

Ответ 1

После большой работы и обсуждения я смог понять это в конце.

Хорошо. Я использую библиотеку с открытым исходным кодом, называемую GLESuperman. Его отличная библиотека, которая помогает отлаживать такие проблемы, и ее можно использовать для рисования графики - довольно быстро. Да, я понятия не имею, почему это называется так... Но это бесплатно, и это работает. Просто найдите его на Гитубе. Он обновляется очень часто и поддерживает iOS 7 и выше.

Итак, чтобы реализовать его, сделайте следующее:

// Import the framework into your Xcode project.
#import <GLESuperman/GLESuperman.h>

// Also you will need to import Core Graphics.
#import <CoreGraphics/CoreGraphics.h>

// In order to run it in debug mode and get 
// a live detailed report about things like FPS, do the following.
GLESuperman *debugData = [[GLESuperman alloc] init];
[debugData runGraphicDebug withRepeat:YES inBackground:YES];

// In order to draw graphics, do the following.
GLESuperman *graphicView = [[GLESuperman alloc] init];
[graphicView drawView:CGRectMake(0, 0, 50, 50];

// You can do other things too like add images/etc..
// Just look at the library documentation, it has everything.

[graphicView setAlpha:1.0];
[graphicView showGraphic];