Почему glTexSubImage2D такой медленный? - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь измерить производительность glTexSubImage2D ().Мне нужно периодически обновлять мою текстуру 1920x1080 перед рендерингом.Странно то, что иногда glTexSubImage2D () занимает менее 20 мс, а иногда - до 190 мс.Фрагмент моего журнала измерений: 22, 94, 21, 94, 22, 93, 22, 94, 36, 24, 98, 21, 94, 108, 121, 30,

Выше приведены миллисекунды, израсходованныес помощью glTexSubImage2D () при обновлении полной текстуры RGBA.Ясно, что я не могу использовать это для рендеринга видео в реальном времени.

Я провожу свои эксперименты на встроенной плате OpenGLES2 ROCK64 ARM с включенным графическим процессором Mali450.

На Raspberry PI3 OpenGLES2 специфичен, но такжеglTexSubImage2D не очень быстрый.Итак, вопрос, почему это так медленно?Возможно ли обновить текстуру как-то иначе и быстрее?

1 Ответ

0 голосов
/ 13 февраля 2019

Как правило, OpenGL останавливает процессор, когда кадр отображается с текстурой, которую вы пытаетесь обновить.

И типичным решением является использование пары текстур.Пока графический процессор занят рендерингом из texture1, вы обновляете texture2 данными для следующего кадра.Когда кадр готов, вы меняете текстуры, поэтому графический процессор блокирует texture2, а вы тем временем обновляете texture1.

...