У меня есть приложение openGL, которое рендерит данные в текстуру rgba.Я хочу кодировать и передавать его с помощью gstreamer framework (используя плагин nvenc для кодирования h264).
Я просматривал документацию для решения этих проблем:
- Как экспортировать существующийКонтекст openGL приложения для элемента nvenc.
- Как передать идентификатор текстуры из источника?
- Как будет работать синхронизация.то есть nvenc должен дождаться окончания рендеринга, и приложение должно дождаться окончания чтения nvenc из текстуры.Я предполагаю, что это будет связано с использованием заборов синхронизации или glMemoryBarriers.
Любой пример кода будет действительно полезным.
Я действительно хочу избегать любых копий текстур в память процессора.NVENC SDK от Nvidia упоминает, что для выполнения вызовов используется контекст CUDA, а текстуру openGL можно импортировать в контекст CUDA с помощью вызова cudaGraphicsGLRegisterImage.Так что я ожидаю, что от приложения к видео кодированный кадр можно сделать без каких-либо копий.