iOS应用程序的快速录制

我是OpenGL ES的新手。 我正在尝试编写iOS应用程序的屏幕录制代码,尤其是游戏。

我在这个答案中使用了代码中描述的“渲染到纹理”方法来捕获屏幕并为cocos2d游戏编写video。 我做的一个修改是,当我调用CVOpenGLESTextureCacheCreate然后我使用[EAGLContext currentContext]而不是

[[GPUImageOpenGLESContext sharedImageProcessingOpenGLESContext] context]

它logging的video,但有两个问题

(1) – 开始录制时,屏幕上的新graphics停止。 我希望应用程序继续在屏幕上绘图。 由于我是OpenGL ES的新手,对帧缓冲对象没有深入的了解,所以我很难弄清楚如何同时在屏幕上绘图并捕捉屏幕。 我会欣赏这方面的代码示例。

(2) – 录制的video翻转倒置。 我怎样才能正确的方向?

以前我也考虑过glReadPixels方法,但是这有性能上的缺点。

更新:也想到了一些想法。 根据我的一点理解,

我可以简单地画我的纹理,但不知道如何。

要么

我可以有一个第二FBO,我可以附加纹理,即

 glGenFramebuffersOES(1, &textureFrameBuffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, textureFrameBuffer); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(renderTexture), 0); //Then I restore the screen FBO. glBindFramebufferOES(GL_FRAMEBUFFER_OES, 1); 

但是,如果我这样做,那么我如何将屏幕绘图复制到我的第二FBO?

有现成的解决scheme,所以如果你不想重新发明轮子,你可以试用Everyplay( https://everyplay.com/about )。

从OpenGL级别logging屏幕的文档可以在这里find: https : //developers.everyplay.com/doc/Everyplay-integration-to-iOS-game

免责声明:我为制作Everyplay的公司工作