2012-11-17 57 views
0

我是OpenGL ES的新手。 我正在嘗試編寫iOS應用程序的屏幕錄製代碼,尤其是遊戲。iOS應用程序的快速屏幕錄製

我使用this answer中用代碼描述的'render to texture'方法捕獲屏幕併爲cocos2d遊戲編寫視頻。 一種修改我做的是,當我打電話CVOpenGLESTextureCacheCreate然後我用 [EAGLContext currentContext] 而不是

[[GPUImageOpenGLESContext sharedImageProcessingOpenGLESContext] context]

它確實記錄視頻,但有兩個問題

(1) - 當它開始錄製,然後屏幕上的新圖形停止。我希望應用程序繼續在屏幕上繪圖。由於我是OpenGL ES的新手,對幀緩衝區對象等沒有深入的瞭解,所以我很難弄清楚如何在屏幕上同時繪圖並捕捉屏幕。我會欣賞這方面的代碼示例。

(2) - 錄製的視頻翻轉過來。我怎樣才能正確的方向?

以前我認爲glReadPixels方法太多,但有性能缺陷。

更新:一些想法也浮現在腦海。據我瞭解甚少,

我可以簡單地畫我的紋理返回到畫面,但不知道怎麼辦。

OR

我可以有一個二級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?

+0

是你的問題解決了工作?我仍然面臨同樣的問題,而不是cocos2d我使用Sparrow框架? –

回答

0

這有現成的解決方案,因此,如果你不希望重新發明輪子,你可以嘗試Everyplay(https://everyplay.com/about)。

從OpenGL的級別錄製屏幕的文檔可以在這裏找到:https://developers.everyplay.com/doc/Everyplay-integration-to-iOS-game

聲明:我的公司,使Everyplay

+0

感謝TuomasR,但是我的應用程序的性質需要對這個輪子進行一些改造。 :),我會非常感謝,如果你可以拋出幾行代碼或指導我如何從一個FBO複製渲染圖像到另一個。非常感謝。 –

相關問題