Видео дисплей с OpenGL - PullRequest
11 голосов
/ 18 июня 2010

Я хочу отображать видео с очень высоким разрешением напрямую с помощью OpenGL.

Данные изображения будут обрабатываться на графическом процессоре, и я хочу избежать обратной передачи на ПК, чтобы показать видео в стандартном окне на основе растрового изображения.
Кроссплатформенность хороша, только с Windows все будет в порядке (так будет только с nvidia)

У кого-нибудь есть ссылки на способы сделать это?

Существует плохое руководство по NeHe и несколько примеров для встроенных виджетов openGL в Qt, но мне нужна гораздо лучшая производительность и намного большие изображения.

Ответы [ 4 ]

11 голосов
/ 20 июня 2010

Предполагая OpenGL 2.1, используйте объект буфера типа GL_PIXEL_UNPACK_BUFFER для потоковой передачи данных пикселей в текстуру. Это быстрее, чем загружать данные каждый кадр, поскольку реализация может использовать DMA для копирования, когда вы используете glMapBuffer, glMapBufferRange (OpenGL 3.2) или напрямую вызываете glBufferData. Вы также можете скопировать несколько кадров в каждом пакете, чтобы получить компромисс между накладными расходами на копирование и накладными расходами на отображение. Наконец, создайте шейдер для преобразования YUV или YCbCr в RGB и отобразите текстуру с полосой треугольника.

2 голосов
/ 18 июня 2010

Очевидное, что можно сделать с OpenGL, это отобразить растровое изображение в виде текстуры.

1 голос
/ 18 июня 2010

То есть вы хотите отправить свое видео на текстуру и обработать его фрагментным шейдером? Вот один короткий урок, как сделать что-то подобное. Это простой пример OpenGL 2.0, который создает 2 текстуры размера окна и смешивает их в фрагментном шейдере. Видео не задействовано, но его нетрудно изменить, если у вас уже есть средства для его декодирования.

0 голосов
/ 24 ноября 2010

Если хотите, я создал очень простой API, который, помимо прочего, также может показывать видео в виде текстуры opengl. Вы также можете создавать динамические карты высот, используя прямую трансляцию видео.

Вы можете проверить API на http://www.barbato.us/category/programming-labs/

Очень прост в использовании и делает код очень читабельным.

Удачи !!!

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