我有一个OpenGL游戏,我想将屏幕上显示的内容保存到视频中.
我怎样才能做到这一点?有没有图书馆或怎么做?
我不关心压缩,我需要最有效的方式,所以希望FPS不会下降.
编辑:
这是OpenGL 1.1,虽然我需要它可移植,但它正在Mac OSX上运行.
当然,即使在运行全屏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);
Run Code Online (Sandbox Code Playgroud)
在那里blx和bly你想捕捉(在你的情况下,屏幕部分的左下角坐标(0, 0)),并w和h有框的宽度和高度被捕获.有关glReadPixels详细信息,请参阅参考资料,例如最后一个参数.
将捕获的屏幕(以所需的速率,例如24 fps)写入视频文件只需选择所需的文件格式(例如原始视频),写入视频的标题并写入图像(图像逐图像)如果原始,或其他一些格式的图像差异等)