我有一个OpenGL游戏,我想将屏幕上显示的内容保存到视频中 我怎样才能做到这一点?有没有图书馆或怎么做? 我不关心压缩,我需要最有效的方式,所以希望FPS不会掉线。
修改
它是OpenGL 1.1,它在Mac OSX上工作,但我需要它是可移植的。
答案 0 :(得分:5)
当然,即使在运行全屏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
以及{{1是要捕获的框的宽度和高度。有关详细信息,请参阅h
的参考,例如最后一个参数。
将捕获的屏幕(以您想要的速率,例如24 fps)写入视频文件只需选择所需的文件格式(例如原始视频),编写视频标题并写入图像(如果是原始的图像或其他格式的图像差异等)
答案 1 :(得分:2)