eglSwapBuffers внезапно занимает гораздо больше времени, чтобы закончить - PullRequest
3 голосов
/ 29 июля 2011

Сегодня я обнаружил, что время кадра моей программы opengles иногда увеличивается по неизвестной причине, обычно это 16 мс, но иногда для завершения одного кадра требуется 33 мс. после нескольких часов профилирования и исследования я нашел причину: увеличение времени фрейма связано с тем, что eglSwapBuffers занимает намного больше времени, чем обычно. обычно время, потраченное на 'eglSwapBuffers', составляет менее 10 миллисекунд, но иногда это занимает около 26 миллисекунд.

сцена статична, поэтому время кадра должно быть стабильным?

Кто-нибудь знает причину, пожалуйста, помогите, что я должен сделать, чтобы сделать мое время кадра стабильным?

Ответы [ 3 ]

1 голос
/ 26 мая 2015

Был ответ в другой ветке , который мне очень помог с этой проблемой.

Такое поведение обычно вызывается несоответствием формата окна и поверхности пикселя, например. 16 бит (RGB565) против 32 бит.

0 голосов
/ 08 марта 2018

В моем случае это был MSAA.Использование 4x MSAA заставило мой eglSwapBuffers () перейти на 30 миллисекунд.

Мне пришлось вынуть две строки из моей конфигурации и вернуться к свопу на 2 мс.

    const EGLint attribs[] = {
            EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
            EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
            EGL_DEPTH_SIZE, 16,
            EGL_BLUE_SIZE, 8,
            EGL_GREEN_SIZE, 8,
            EGL_RED_SIZE, 8,
//              EGL_SAMPLE_BUFFERS, 1,
//              EGL_SAMPLES, 4,
            EGL_NONE
    };
0 голосов
/ 22 февраля 2012

Я тоже сталкиваюсь с такой проблемой.

Я обнаружил, что если окно eglsurface изменено на большее, время, потраченное eglSwapbuffer, становится очень длинным (примерно в 2 раза больше нормального состояния).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...