Быстрое копирование между двумя FBO или из FBO в текстуру в OpenGL-ES 1.1 - PullRequest
0 голосов
/ 08 марта 2011

Привет.

Моя цель - реализовать конвейер для обработки видеокадров, который имеет «текущий» и «предыдущий» кадры. В некоторых случаях необходимо скопировать субрегион из «предыдущего» кадра в «текущий» кадр. Это своего рода декодер, который является частью более крупного приложения.

Это то, что я запускаю до сих пор, на iPhone с использованием OpenGL-ES 1.1

                            glCopyTexSubImage2D
                        .--------------------\
  glTexSubImage2D       V     glDrawArray    |

изображение --------------------------> Текстура --------------> FBO / Текстура -------> буфер рендеринга

Текстура обновляется каждый новый или частичный кадр как обычно. Текстура рисуется в объекте буфера кадра и в конечном итоге отображается.

Эти части очень хорошо работают.

Проблема в glCopyTexSubImage2D, который, профилированный с использованием инструментов, показывает, что он занимает около 50% процессорного времени; похоже, что он делает копию с использованием процессора. Тьфу.

Прежде чем опубликовать код (и я с радостью это сделаю), я хотел спросить, является ли эта архитектура надежной?

Следующим этапом проекта является предоставление окончательного FBO / Texture с другим контекстом GL для рендеринга на внешний экран. Я читал другие посты о деликатной природе общих ресурсов.

Спасибо за любые рекомендации.

Ура, Крис

P.S. У меня были некоторые проблемы с тем, чтобы диаграмма выглядела правильно. Линия обратного потока должна идти от узла FBO / Texture к узлу Texture.

1 Ответ

1 голос
/ 15 марта 2011

glCopyTexImage*D и glGetTexImage*D, как известно, медленны до чертиков, независимо от того, на какой платформе вы находитесь.

Чтобы заменить glCopyTexSubImage2D, вы можете просто добавить еще одну FBO / текстуру и визуализировать другуюТекстуру вы хотите скопировать в нее, тогда вы можете получить текстуру из FBO.Я не уверен, что это будет быстрее, но так и должно быть.

                           Render to FBO
                       .--------------------\
 glTexSubImage2D       V     glDrawArray    |

image --------------------------> FBO / Texture --------------> FBO / Texture -------> буфер рендеринга

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