[英]Fast Screen Recording of iOS App
我是OpenGL ES的新手。 我正在嘗試編寫代碼來錄制iOS應用程序(尤其是游戲)的屏幕。
我正在使用此答案中的代碼描述的“渲染到紋理”方法來捕獲屏幕並為cocos2d游戲編寫視頻。 我所做的一個修改是,當我調用CVOpenGLESTextureCacheCreate
時,我使用的是[EAGLContext currentContext]
而不是
[[GPUImageOpenGLESContext sharedImageProcessingOpenGLESContext] context]
它確實錄制了視頻,但是有兩個問題
(1)-開始記錄時,屏幕上的新圖紙停止。 我也希望該應用程序繼續在屏幕上繪圖。 由於我是OpenGL ES的新手,所以我對幀緩沖區對象等沒有深刻的了解,因此很難弄清楚如何在屏幕上同時繪制和捕獲屏幕。 在這方面,我將感謝一個代碼示例。
(2)-錄制的視頻上下顛倒。 如何獲得正確的方向?
以前,我也考慮過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?
有現成的解決方案,因此,如果您不想重新發明輪子,可以嘗試Everyplay( https://everyplay.com/about )。
您可以在以下位置找到用於從OpenGL級別記錄屏幕的文檔: https : //developers.everyplay.com/doc/Everyplay-integration-to-iOS-game
免責聲明:我為制作Everyplay的公司工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.