录制的目的是什么?
如果您希望在设备上重播序列,可以考虑保存对象位置等,并在3D中重新绘制序列。这也使得从其他视角重播序列成为可能。
如果您想在YouTube或其他平台上展示游戏过程,可以考虑使用另一台设备/相机来记录游戏过程,或者使用一些屏幕捕获软件(如ScreenFlow)在模拟器中记录一些游戏过程。
glReadPixels()
,它只是从显示缓冲区中获取所有数据,并可能在GPU和CPU之间触发同步屏障等。您无法使该部分更快或降低分辨率。
您是为了创建一次性视频而这样做吗?还是您希望用户能够在生产代码中触发此行为?如果是前者,您可以使用各种技巧来加速--为所有内容渲染到更小的尺寸,根本不要执行present
,仅基于输入数据运行记录捕获帧,或其他类似技巧,甚至进一步以半速运行整个模拟以获取所有帧。
如果您需要实际的游戏内功能,则我就没那么有用了。也许其他人会更有帮助。