2

我正在制作安卓游戏。(使用andengine)我需要记录游戏画面。这不是为了制作宣传视频,而是为了让游戏玩家回顾他们的游戏。我的应用程序应该自己录制视频。所以我无法使用市场上可用的录音应用程序来解决这个问题。我已经检查了下面的代码。

http://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/ScreenCaptureExample.java?spec=svn66d3057f672175a8a21f9d06e7a045942331f65c&r=66d3057f672175a8a21f9d16e7a0459423

它工作得很好..但我想录制游戏视频,而不是一个截图。

至少我需要 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 权限才能获取帧缓冲区。我读过一些消息,Android 将在姜饼之后支持从 suface_flinger 捕获屏幕。

但我不知道如何在没有 root 权限的情况下使用帧缓冲区。T_T

这些是我的猜测解决方案。

  1. 使用另一个比 glreadpixels 速度更快的 opengl API。

  2. 发现一些android API可以在没有root权限的情况下获取framebuffer。(也许我可以访问 android SURFACE_FLINGER ??)

  3. 绘制另一个屏幕外纹理来录制视频。

但我不知道如何实现这些方法。哪种方法是正确的?你有为安卓录制视频的示例代码吗?请帮我解决这个问题。如果您知道任何其他方法,那将很有帮助。

任何帮助将不胜感激

4

1 回答 1

0

您设备的GPU供应商是否支持es3.0,如果支持,您可以尝试使用PBO。

这是我可以参考的一个主题:PBO 的回读性能低,帮助!!!!!!

于 2013-07-09T06:35:18.210 回答