Безусловно, есть отличное программное обеспечение для захвата видео, которое вы можете использовать для захвата экрана даже при запуске полноэкранной игры 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 кадра в секунду) в видеофайл - это просто вопрос выбора формата файла, который вы хотите (например, необработанное видео), записи заголовка видео и записи изображений ( изображение за изображением, если оно необработанное, или различия изображений в каком-либо другом формате и т. д.)