Substitute fake backbuffer FBO where FBO binding state is 0

This commit is contained in:
baldurk
2014-08-15 14:47:07 +01:00
parent 56430387db
commit 0c086abc6f
4 changed files with 11 additions and 3 deletions
+1 -1
View File
@@ -793,7 +793,7 @@ bool WrappedOpenGL::Serialise_BeginCaptureFrame(bool applyInitialState)
state.FetchState();
}
state.Serialise(m_State, GetCtx(), GetResourceManager());
state.Serialise(m_State, GetCtx(), this);
if(m_State <= EXECUTING && applyInitialState)
{
+2
View File
@@ -273,6 +273,8 @@ class WrappedOpenGL
void ReplayLog(uint32_t frameID, uint32_t startEventID, uint32_t endEventID, ReplayLogType replayType);
void ReadLogInitialisation();
GLuint GetFakeBBFBO() { return m_FakeBB_FBO; }
vector<FetchFrameRecord> &GetFrameRecord() { return m_FrameRecord; }
FetchAPIEvent GetEvent(uint32_t eventID);
+7 -1
View File
@@ -23,6 +23,7 @@
******************************************************************************/
#include "gl_renderstate.h"
#include "gl_driver.h"
GLRenderState::GLRenderState(const GLHookSet *funcs, Serialiser *ser)
: m_Real(funcs)
@@ -455,8 +456,9 @@ void GLRenderState::Clear()
RDCEraseEl(CullFace);
}
void GLRenderState::Serialise(LogState state, void *ctx, GLResourceManager *rm)
void GLRenderState::Serialise(LogState state, void *ctx, WrappedOpenGL *gl)
{
GLResourceManager *rm = gl->GetResourceManager();
// TODO check GL_MAX_*
m_pSerialiser->Serialise<eEnabled_Count>("GL_ENABLED", Enabled);
@@ -522,12 +524,16 @@ void GLRenderState::Serialise(LogState state, void *ctx, GLResourceManager *rm)
if(state >= WRITING) ID = rm->GetID(FramebufferRes(ctx, DrawFBO));
m_pSerialiser->Serialise("GL_DRAW_FRAMEBUFFER_BINDING", ID);
if(state < WRITING && ID != ResourceId()) DrawFBO = rm->GetLiveResource(ID).name;
if(DrawFBO == 0) DrawFBO = gl->GetFakeBBFBO();
}
{
ResourceId ID = ResourceId();
if(state >= WRITING) ID = rm->GetID(FramebufferRes(ctx, ReadFBO));
m_pSerialiser->Serialise("GL_READ_FRAMEBUFFER_BINDING", ID);
if(state < WRITING && ID != ResourceId()) ReadFBO = rm->GetLiveResource(ID).name;
if(ReadFBO == 0) ReadFBO = gl->GetFakeBBFBO();
}
struct { IdxRangeBuffer *bufs; int count; } idxBufs[] =
+1 -1
View File
@@ -201,7 +201,7 @@ struct GLRenderState
GLenum CullFace;
//
void Serialise(LogState state, void *ctx, GLResourceManager *rm);
void Serialise(LogState state, void *ctx, WrappedOpenGL *gl);
private:
Serialiser *m_pSerialiser;
const GLHookSet *m_Real;