我目前正在使用this method from Apple截取我的OpenGL ES iPhone游戏的截图。屏幕截图看起来很棒。然而,截屏导致游戏中的小口吃(否则以60 fps平稳运行)。 如何修改the method from Apple以获取质量较低的屏幕截图(从而消除因截屏而导致的口吃)?
编辑#1 :最终目标是使用AVAssetWriter
制作游戏视频。也许有一种更有效的方法来生成this SO post中引用的CVPixelBuffers。
答案 0 :(得分:3)
录音的目的是什么?
如果要在设备上重放序列,可以考虑保存对象位置等,并在3D中重绘序列。这也可以从其他视图位置重放序列。
如果您想在youtube或其他地方展示游戏,您可以考虑使用其他设备/相机录制游戏,或使用某些屏幕捕获软件作为ScreenFlow记录在模拟器中运行的一些游戏。< / p>
答案 1 :(得分:2)
Apple方法使用glReadPixels()
,它只是从显示缓冲区中提取所有数据,并可能触发GPU和CPU之间的同步障碍等。你不能让这部分更快或更低分辨率。
您是否这样做是为了创建一次性视频?或者您是否希望用户能够在生产代码中触发此行为?如果是前者,你可以做各种各样的技巧来加速它 - 为所有东西渲染到更小的尺寸,根本不要present
只是根据输入数据的记录来捕获帧。游戏,或其他类似的技巧,或甚至进一步以半速运行整个模拟以获得所有帧。
如果你需要一个真正的游戏内功能,我就没用了。也许其他人会。
答案 2 :(得分:2)
如果一切都失败了。
获取其中一个 http://store.apple.com/us/product/MC748ZM/A
然后通过某种外部设备将复合视频转换为数字视频。 很久以前,当我将vhs电影转换为dvd时,我已经这样做了。