降低iPhone上OpenGL ES截图的质量

4
我目前正在使用苹果公司提供的这种方法来截取OpenGL ES iPhone游戏的屏幕截图,截图效果非常好。但是,截屏会导致游戏略微卡顿(否则游戏以60 fps流畅运行)。我应该如何修改苹果公司提供的方法来截取质量较低的截图(从而消除由截图引起的卡顿)?

编辑#1:最终目标是使用AVAssetWriter创建游戏玩法视频。也许有一种更有效率的方法来生成在此SO帖子中引用的CVPixelBuffers。

3个回答

3

录制的目的是什么?

  • 如果您希望在设备上重播序列,可以考虑保存对象位置等,并在3D中重新绘制序列。这也使得从其他视角重播序列成为可能。

  • 如果您想在YouTube或其他平台上展示游戏过程,可以考虑使用另一台设备/相机来记录游戏过程,或者使用一些屏幕捕获软件(如ScreenFlow)在模拟器中记录一些游戏过程。


2
苹果方法使用glReadPixels(),它只是从显示缓冲区中获取所有数据,并可能在GPU和CPU之间触发同步屏障等。您无法使该部分更快或降低分辨率。

您是为了创建一次性视频而这样做吗?还是您希望用户能够在生产代码中触发此行为?如果是前者,您可以使用各种技巧来加速--为所有内容渲染到更小的尺寸,根本不要执行present,仅基于输入数据运行记录捕获帧,或其他类似技巧,甚至进一步以半速运行整个模拟以获取所有帧。

如果您需要实际的游戏内功能,则我就没那么有用了。也许其他人会更有帮助。


是的,我正在寻找游戏内功能。 - SundayMonday

2
如果其他方法都失败了,可以尝试购买这个:http://store.apple.com/us/product/MC748ZM/A,然后通过某种外部设备将复合视频转换为数字信号。我在很久以前将VHS电影转换成DVD时也是这样做的。

OP 显然是想创建一个游戏内捕获功能,而不是从游戏中获取一次性视频。 - Ben Zotto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接