OpenGLESは初めてです。iOSアプリ、特にゲームの画面記録用のコードを作成しようとしています。
この回答のコードで説明されている「テクスチャにレンダリング」メソッドを使用して、画面をキャプチャし、cocos2dゲームのビデオを作成しています。私が行った変更の1つは、電話をかけるときに、
代わりにをCVOpenGLESTextureCacheCreate
使用していることです
。[EAGLContext currentContext]
[[GPUImageOpenGLESContext sharedImageProcessingOpenGLESContext] context]
ビデオを録画しますが、2つの問題があります
(1)-記録を開始すると、画面上の新しい描画が停止します。アプリも画面に描き続けてほしいです。私はOpenGLESを初めて使用するため、フレームバッファオブジェクトなどを深く理解していないため、画面上に描画すると同時に画面をキャプチャする方法を理解するのに苦労しています。この点に関するコード例をいただければ幸いです。
(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にコピーするにはどうすればよいですか?