mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-27 20:31:02 +00:00
Save draw and read framebuffer bindings, add some more TODOs
This commit is contained in:
@@ -141,6 +141,9 @@ void GLRenderState::FetchState()
|
||||
for(GLuint i=0; i < (GLuint)ARRAY_COUNT(Scissors); i++)
|
||||
m_Real->glGetIntegeri_v(eGL_SCISSOR_BOX, i, &Scissors[i].x);
|
||||
|
||||
m_Real->glGetIntegerv(eGL_DRAW_FRAMEBUFFER_BINDING, (GLint *)&DrawFBO);
|
||||
m_Real->glGetIntegerv(eGL_READ_FRAMEBUFFER_BINDING, (GLint *)&ReadFBO);
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(DrawBuffers); i++)
|
||||
m_Real->glGetIntegerv(GLenum(eGL_DRAW_BUFFER0 + i), (GLint *)&DrawBuffers[i]);
|
||||
|
||||
@@ -304,6 +307,9 @@ void GLRenderState::ApplyState()
|
||||
|
||||
m_Real->glScissorArrayv(0, ARRAY_COUNT(Scissors), &Scissors[0].x);
|
||||
|
||||
m_Real->glBindFramebuffer(eGL_READ_FRAMEBUFFER, ReadFBO);
|
||||
m_Real->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, DrawFBO);
|
||||
|
||||
GLenum DBs[8] = { eGL_UNKNOWN_ENUM };
|
||||
uint32_t numDBs = 0;
|
||||
for(GLuint i=0; i < (GLuint)ARRAY_COUNT(DrawBuffers); i++)
|
||||
@@ -395,6 +401,10 @@ void GLRenderState::Clear()
|
||||
RDCEraseEl(Viewports);
|
||||
RDCEraseEl(Scissors);
|
||||
|
||||
RDCEraseEl(DrawFBO);
|
||||
RDCEraseEl(ReadFBO);
|
||||
RDCEraseEl(DrawBuffers);
|
||||
|
||||
RDCEraseEl(PatchParams);
|
||||
RDCEraseEl(PolygonMode);
|
||||
RDCEraseEl(PolygonOffset);
|
||||
@@ -447,6 +457,19 @@ void GLRenderState::Serialise(LogState state, void *ctx, GLResourceManager *rm)
|
||||
if(state < WRITING && ID != ResourceId()) BufferBindings[i] = rm->GetLiveResource(ID).name;
|
||||
}
|
||||
|
||||
{
|
||||
ResourceId ID = ResourceId();
|
||||
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;
|
||||
}
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
struct { IdxRangeBuffer *bufs; int count; } idxBufs[] =
|
||||
{
|
||||
{ AtomicCounter, ARRAY_COUNT(AtomicCounter), },
|
||||
|
||||
@@ -120,13 +120,18 @@ struct GLRenderState
|
||||
{
|
||||
int32_t x, y, width, height;
|
||||
} Scissors[16];
|
||||
|
||||
|
||||
GLuint ReadFBO, DrawFBO;
|
||||
GLenum DrawBuffers[8];
|
||||
|
||||
// TODO:
|
||||
// Framebuffer Bindings
|
||||
// Program Bindings
|
||||
// Vertex Attribs/Buffers/Pointers etc
|
||||
// Image state (GL_IMAGE_BINDING_NAME)
|
||||
// multisampling
|
||||
// provoking vertex
|
||||
// other misc state :)
|
||||
|
||||
struct
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user