プロジェクトのゲームプレイ (ios-opengles 2.0) を記録するために、everyplay SDK を使用しています。うまく機能しています。しかし、RenderToTexture (シャドウ用) を使用すると、空白の画面が記録されます。どうすればこの問題を克服できますか?
シャドウの場合、 rendertarget をシフトする複数のレンダー パスが必要です。他の方法はありますか?
プロジェクトのゲームプレイ (ios-opengles 2.0) を記録するために、everyplay SDK を使用しています。うまく機能しています。しかし、RenderToTexture (シャドウ用) を使用すると、空白の画面が記録されます。どうすればこの問題を克服できますか?
シャドウの場合、 rendertarget をシフトする複数のレンダー パスが必要です。他の方法はありますか?
次のようにしてみてください。
while(1) {
renderShadow();
glBindFramebuffer(GL_FRAMEBUFFER, fbo1);
[everyplayCapture afterPresentRenderbuffer:fbo1];
glClearColor(0.45f, 0.45f, 0.45f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
....
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
...
[everyplayCapture beforePresentRenderbuffer:fbo1];
[(EAGLView *)self.view presentFramebuffer];
}
createframebuffer で定義したフレームバッファに対して afterPresentRenderbuffer を呼び出していると確信しています。
fbo1(framebuffer object) が everyplay に使用され、fb02 が影に使用されると考えると、影のないフレームごとの実行順序になります。
while(1){
glClearColor(0.45f, 0.45f, 0.45f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
....
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
...
[(EAGLView *)self.view presentFramebuffer];
}
以下のコード順序は、影付きのレンダリング用です
while(1) {
glClearColor(0.45f, 0.45f, 0.45f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
renderShadow();
glBindFramebuffer(GL_FRAMEBUFFER, fbo1);
....
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
...
[(EAGLView *)self.view presentFramebuffer];
}
renderShadow(){
glBindFramebuffer(GL_FRAMEBUFFER, fbo2);
....
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
....
}
glBindframebuffer を 2 つの FBo でシフトすると、画面が空白になり、everyplay が空白の画面を記録します。Everyplay の統合を削除すると、上記の影のコードがうまく機能します。Everyplay が ios 用に提供するサンプル プロジェクト「EveryplayRecord.xcodeproject」では、次の行を含めます。
glBindFramebuffer(GL_FRAMEBUFFER, defaultFrameBuffer); // in drawRect() method it also renders blank screen.