首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS应用的快速屏幕录制

iOS应用的快速屏幕录制
EN

Stack Overflow用户
提问于 2012-11-17 21:24:53
回答 1查看 1.8K关注 0票数 0

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

我正在使用this answer中的代码描述的“渲染到纹理”方法来为cocos2d游戏捕捉屏幕并编写视频。我做的一个修改是,当我调用CVOpenGLESTextureCacheCreate时,我使用[EAGLContext currentContext]而不是

[[GPUImageOpenGLESContext sharedImageProcessingOpenGLESContext] context]

它确实会录制视频,但有两个问题

(1)-当开始录制时,屏幕上的新绘图将停止。我也想让应用程序继续在屏幕上绘图。由于我是OpenGL ES的新手,我对帧缓冲对象等没有深入的理解,所以我很难弄清楚如何同时在屏幕上绘制和捕获屏幕。在这方面,我会很欣赏代码示例的。

(2)-录制的视频被颠倒。我怎样才能把它引向正确的方向呢?

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

更新:一些想法也浮现在脑海中。据我所知,

我可以简单地将我的纹理画回到屏幕上,但不知道怎么做。

我可以有一个二级FBO,我可以将纹理附加到它上,即

代码语言:javascript
复制
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中?

EN

回答 1

Stack Overflow用户

发布于 2013-02-01 15:59:22

有现成的解决方案可以解决这个问题,所以如果你不想重新发明轮子,你可以尝试一下Everyplay (https://everyplay.com/about)。

可以在以下位置找到从OpenGL级别录制屏幕的文档:https://developers.everyplay.com/doc/Everyplay-integration-to-iOS-game

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13430993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档