我一直在使用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。 –