我使用glReadPixels()来读取帧缓冲数据,然后在AVFoundation框架中借助AVAssetWriter将其写入视频。但是,只有在使用glReadPixels时,读取每个图形上的数据才能将FPS从大约30-35降低到2-3。
我认为会说话的tomcat也是在Opengl ES的帮助下制作的,它也有视频录制设备但是在读取每个帧的任何想法时它都不会减慢......?
答案 0 :(得分:8)
如果有人想要实现相同的......我想通了自己。 首先令我惊讶的是,我发现说tomcat不是3D游戏应用程序......它使用帧动画进行所有动作。如果有人想要捕获那种视图,那么他们可以使用以下代码---
UIGraphicsBeginImageContext(self.view.bounds.size); //self.view.window.frame.size
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
然后使用AVAssetWriter从该帧创建视频。当然,你可以在其他一些帖子中找到代码..对我来说它没有用,因为我必须捕捉3D部分.. 干杯
答案 1 :(得分:0)
这个问题并不新鲜,但我想我会投入:
我们提供名为“Everyplay”的SDK,可让您完全按照自己的意愿行事。它可以免费使用,而且重量很轻。
我们为Unity3D提供开箱即用的集成,cocos2d(1.x,2.x),cocos2d-x,您当然可以集成到基于OpenGL的自定义游戏引擎。
文档位于https://developers.everyplay.com/doc
该文档包含开发时使用的示例应用密钥,但您当然可以在https://developers.everyplay.com/注册自己的客户端密钥