mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-29 13:20:54 +00:00
Substitute fake backbuffer FBO where FBO binding state is 0
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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[] =
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user