我一直在使用Everyplay SDK來記錄我的項目的遊戲玩法(ios-opengles 2.0)。它的運作良好。但是,如果我使用RenderToTexture(用於陰影),它只是記錄空白屏幕。我怎樣才能克服這個問題?Everyplay是否支持多個渲染通道? (ios)
對於陰影,我需要有多個渲染通道來移動rendertarget。有沒有其他方法?
我一直在使用Everyplay SDK來記錄我的項目的遊戲玩法(ios-opengles 2.0)。它的運作良好。但是,如果我使用RenderToTexture(用於陰影),它只是記錄空白屏幕。我怎樣才能克服這個問題?Everyplay是否支持多個渲染通道? (ios)
對於陰影,我需要有多個渲染通道來移動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];
}
+1此過程完全解決了該問題。感謝您的指導。 – VivekParamasivam
ya我確定我正在調用afterPresentRenderbuffer用於我在createframebuffer中定義的framebuffer。由於多個渲染通道需要爲單個傳遞綁定2個或更多個幀緩衝區。
認爲fbo1(幀緩衝區對象)用於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);
....
}
當我移動兩個FBo的glBindframebuffer時,屏幕變爲空白,每個播放記錄黑屏。 如果我刪除Everyplay的集成,上面的陰影代碼運行良好。 在通過Everyplay爲iOS「EveryplayRecord.xcodeproject」提供的,如果我有行項目的例子
glBindFramebuffer(GL_FRAMEBUFFER, defaultFrameBuffer); // in drawRect() method it also renders blank screen.
如果在glBindFramebuffer(GL_FRAMEBUFFER,fbo1)之後移動[everyplayCapture beforePresentRenderbuffer:fbo1]會怎樣?在你影子代碼的例子? –
感謝您的回覆。你的建議做出了改變,但沒有完全解決問題。放置glBindFramebuffer(GL_FRAMEBUFFER,fbo1)後;在[BeforeplayRenderbuffer:fbo1]之前的[everyplayCapture]行,我的遊戲在錄製時呈現良好,但在點擊「PlayLastRecorded」後沒有顯示任何內容。我認爲它接近解決方案。
– VivekParamasivam請嘗試下面的答案。正確放置afterPresentRenderBuffer和beforePresentRenderbuffer是至關重要的,在某些情況下,您可能需要使用Everyplay FAQ中提到的setActiveFramebufferCallback。 –
是的,這應該是可能的。我在Unity3D項目中使用了陰影,錄製效果很好。可能與你的幀緩衝器有關。你應該確保你只爲你在createframebuffer中定義的framebuffer調用afterPresentRenderbuffer。 –