簡體   English   中英

iOS應用的快速屏幕錄制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM