2016-11-16 9 views
1

Я здесь, потому что я работаю над программой OpenGL, и у меня есть некоторые проблемы с производительностью. Я работаю с OpenGL ES 3.0 на iMX6 soc.Open gl es - Как улучшить производительность, визуализировать текстуру, смешать

Вот мой алгоритм:

  1. я получить изображение с камеры, которая непосредственно соединенным с текстурой. Используя FBO, я визуализую текстуру, чтобы отобразить изображение в определенной форме.

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

  3. Я смешиваю эти две текстуры в буфере кадра по умолчанию, чтобы отобразить результат на экране.

Если я выполняю эти три этапа отдельно, он работает хорошо, и экран обновляется на 30FPS. Но когда я включаю три шага в одну программу, рендеринг выполняется очень медленно, и я получаю только 0.5FPS.

Мне интересно, достаточно ли GPU на iMX6, но я думаю, что это не сложный алгоритм. Я думаю, что я делаю что-то не так, но что? Я использую 3 разных буфера кадров, так что это хороший способ или я должен использовать только один?

Может кто-нибудь дать мне ответ, подсказки, все, что может мне помочь? :-)

Размеры моих изображений: 1280x1024 x RGBA. Затем я делаю некоторое преобразование из текстуры с плавающей точкой в ​​целое и обратно в float, это делается для выполнения побитовой операции над пикселями.

+0

«Затем я делаю преобразование из текстуры с плавающей точкой в ​​целое и обратно в float, это делается для выполнения побитовой операции над пикселями». Моей догадкой было бы, что это медленный бит. Что произойдет, если вы сделаете более простую смесь в качестве теста (например, выведите среднее из двух изображений)? – Columbo

+0

Спасибо за ваш ответ, я не могу попробовать это сейчас, но я сделаю это как можно скорее. Лучше ли работать с текстурой с плавающей запятой или целочисленным или даже нормализованным целым числом? (Для лучшей производительности) – Ango742

+0

Некоторый фактический код и шейдеры помогли бы - трудно дать конкретные советы, основанные на довольно пушистом описании ... – solidpixel

ответ

0

Благодаря @Columbo проблема возникла из всех преобразований, я работаю с текстурой с плавающей точкой и только для побитовых операций, я делаю преобразование, которое улучшает производительность алгоритма.

Еще один момент, который снижает производительность, - это формат текстуры. Для первого шага изображение было 1280x1024, но только на одном изображении (полутоновое изображение). Чтобы сохранить только оттенок серого и не использовать слишком много памяти, я работал с текстурой GL_RED, но это было не очень хорошо, потому что, когда я изменил ее на GL_RGB, я удвоил частоту кадров рендера.