Сохранить рендеринг OpenGL в видео - PullRequest
3 голосов
/ 03 октября 2011

У меня есть игра OpenGL, и я хочу сохранить видео, показанное на экране.
Как я могу это сделать? Есть какая-нибудь библиотека или как это сделать?
Меня не волнует сжатие, мне нужен самый эффективный способ, так что, надеюсь, FPS не упадет.

EDIT:
Это OpenGL 1.1 и он работает на Mac OSX, хотя мне нужно, чтобы он был переносимым.

Ответы [ 2 ]

5 голосов
/ 03 октября 2011

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

Если вы используете новые версии OpenGL, как уже упоминалось в genpfault, вы можете использовать PBO. Если вы используете устаревший OpenGL (версия 1.x), вот как вы можете сделать снимок экрана:

glFinish(); // Make sure everything is drawn
glReadBuffer(GL_FRONT);
glPixelStorei(GL_PACK_ALIGNMENT, 4);
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
glPixelStorei(GL_PACK_SKIP_ROWS, 0);
glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
glReadPixels(blx, bly, w, h, mode, GL_UNSIGNED_BYTE, GL_BGRA);

, где blx и bly - нижние левые координаты части экрана, которую вы хотите захватить (в вашем случае (0, 0)), w и h - ширина и высота поля быть захваченным. См. Ссылку для glReadPixels для получения дополнительной информации, такой как последний параметр.

Запись захваченного экрана (с желаемой скоростью, например, 24 кадра в секунду) в видеофайл - это просто вопрос выбора формата файла, который вы хотите (например, необработанное видео), записи заголовка видео и записи изображений ( изображение за изображением, если оно необработанное, или различия изображений в каком-либо другом формате и т. д.)

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