Cinder: Как получить указатель на данные \ фрейм, сгенерированный, но никогда не показанный на экране? - PullRequest
0 голосов
/ 18 декабря 2011

Есть та решетка lib, которую я хочу использовать, которая называется libCinder , я просмотрел ее документы , но не получил, если это возможно, и как сделать что-либо, не показывая его первым?

Скажем, мы хотим создать простой случайный цветной холст 640x480 с 3 красными белыми синими кругами на нем и заставить RGB \ HSL \ any char * извлекать из него необработанные данные изображения, не показывая окна.пользователю.(скажем, у нас есть тип проекта консольного приложения).Я хочу использовать такую ​​функцию для генерации потокового видео на стороне сервера и для потоковой передачи видео. Я бы предпочел использовать ffmpeg , поэтому я хочу указатель на какой-нибудь RGB \ HSV или какой-либо буфер с актуальными данными изображения.,Как это сделать с помощью libCInder?

1 Ответ

1 голос
/ 21 декабря 2011

Вам придется использовать внеэкранный рендеринг. libcinder кажется просто оболочкой для OpenGL в плане графики, поэтому вы можете использовать код OpenGL для достижения этой цели.

Поскольку OpenGL не имеет встроенного механизма рендеринга за пределами экрана, вам придется использовать расширение. Учебное пособие по использованию такого расширения, называемого Framebuffer Rendering, можно найти здесь . Вам придется изменить renderer.cpp, чтобы использовать команды этого расширения.

Альтернативой использованию такого расширения является использование Mesa 3D, который является реализацией OpenGL с открытым исходным кодом. Mesa имеет программный механизм рендеринга, который позволяет выполнять рендеринг в память без использования видеокарты. Это означает, что вам не нужна видеокарта, но, с другой стороны, рендеринг может быть медленным. Mesa содержит пример рендеринга в буфер памяти в src/osdemos/ в файле Demos zip. Это решение, вероятно, потребует от вас написания полного Renderer класса, похожего на Renderer2d и RendererGl, который будет использовать вторжения Mesa вместо Windows или Mac.

...