В настоящее время я портирую приложение OpenGL (которое рисует только 2D-объекты) на OpenGL ES для правильной работы на Raspberry Pi.
По какой-то причине eglSwapBuffers
занимает огромное количество времени. Вот мой тест, который я сделал (и вы можете увидеть, какие функции я использую):
****** BEGIN BENCHMARK RESULTS
GLESSTATS swap_buffers: 519,180 ms
GLESSTATS createShader: 5,508 ms
GLESSTATS createProgram: 3,584 ms
GLESSTATS setViewport: 0,010 ms
GLESSTATS createTexture: 17,087 ms
GLESSTATS bindTexture: 0,008 ms
GLESSTATS updateTexture: 2,192 ms
GLESSTATS drawGradientRect: 0,288 ms
GLESSTATS drawTexturedRect: 0,206 ms
****** END BENCHMARK RESULTS
В настоящее время я пытаюсь создать поверхность RGBA. Вот мои атрибуты для EGL:
EGLint ctx_attrs[] = {
EGL_RENDERABLE_TYPE, OPEN_GL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RED_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_BLUE_SIZE, 8,
EGL_ALPHA_SIZE, 8,
EGL_NONE
};
EGLint surf_attrs[] = {
EGL_RENDER_BUFFER, EGL_BACK_BUFFER,
EGL_NONE
};
Я что-то здесь не так делаю? Все, что я обнаружил, это то, что несовпадающий формат пикселя между окном и поверхностью может заставить swap_buffers занимать много времени. Я попробовал это с R5G6B5, с R8G8B8 и R8G8B8A8.