我正在制作安卓游戏。(使用andengine) 我需要记录游戏屏幕。 这不是用于制作宣传视频,而是用于游戏玩家查看他们的游戏玩法。 我的应用程序应该自己录制视频。 所以我无法使用市场上的可用录音应用来解决这个问题。 我已经检查了下面的代码。
效果很好.. 但是我想录制游戏视频,而不是一个截图。
至少我需要24fps才能顺利重放,但是如果我使用glreadpixels,我可以在我的xoom设备上获得5 fps。 我搜索了各种网站来解决这个优化问题。 大多数人说glreadplxels太慢,无法录制视频。
http://www.gamedev.net/topic/473794-glreadpixel-takes-tooooo-much-time/
他们建议使用glcopyteximage2d而不是glreadpixels。 因为glcopyteximage2d比glreadpixels快得多。 但我找不到如何在andengine中使用glcopyteximage2d。 甚至有人说android opengl ES不支持glcopyteximage2d。
也许存在记录流畅视频的另一种方法。 它是android设备的读取帧缓冲区。 大多数使用此方法在市场上录制应用程序。但这些应用程序需要root权限才能获取framebuffer。 我已经读过一些消息,知道在姜饼之后,android会支持来自suface_flinger的捕获屏幕。
但我无法在没有root权限的情况下找到如何使用framebuffer。 T_T
这些是我的猜测解决方案。
使用另一个比glreadpixels更快的opengl API。
找到一些没有root权限的android API可以获得framebuffer。 (也许我可以访问android SURFACE_FLINGER ??)
绘制另一个屏幕外纹理以录制视频。
但我不知道如何实现这些方法。 哪种方法是正确的? 你有一个示例代码来记录Android的视频吗? 请帮我解决这个问题。 如果你知道任何其他方法,那将会有所帮助。
任何帮助将不胜感激
答案 0 :(得分:0)
您设备的GPU供应商是否支持es3.0,如果可以,您可以尝试使用PBO。
以下是我可以参考的主题:Low readback performance with PBO , help !!!!!