mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-26 20:01:17 +00:00
Only account for faked backbuffer in renderstate when replaying
This commit is contained in:
@@ -813,7 +813,7 @@ void WrappedOpenGL::AttemptCapture()
|
||||
|
||||
bool WrappedOpenGL::Serialise_BeginCaptureFrame(bool applyInitialState)
|
||||
{
|
||||
GLRenderState state(&m_Real, m_pSerialiser);
|
||||
GLRenderState state(&m_Real, m_pSerialiser, m_State);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
|
||||
@@ -25,9 +25,10 @@
|
||||
#include "gl_renderstate.h"
|
||||
#include "gl_driver.h"
|
||||
|
||||
GLRenderState::GLRenderState(const GLHookSet *funcs, Serialiser *ser)
|
||||
GLRenderState::GLRenderState(const GLHookSet *funcs, Serialiser *ser, LogState state)
|
||||
: m_Real(funcs)
|
||||
, m_pSerialiser(ser)
|
||||
, m_State(state)
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
@@ -352,17 +353,20 @@ void GLRenderState::ApplyState()
|
||||
numDBs++;
|
||||
DBs[i] = DrawBuffers[i];
|
||||
|
||||
// since we are faking the default framebuffer with our own
|
||||
// to see the results, replace back/front/left/right with color attachment 0
|
||||
if(DBs[i] == eGL_BACK_LEFT || DBs[i] == eGL_BACK_RIGHT ||
|
||||
DBs[i] == eGL_FRONT_LEFT || DBs[i] == eGL_FRONT_RIGHT)
|
||||
DBs[i] = eGL_COLOR_ATTACHMENT0;
|
||||
|
||||
// These aren't valid for glDrawBuffers but can be returned when we call glGet,
|
||||
// assume they mean left implicitly
|
||||
if(DBs[i] == eGL_BACK ||
|
||||
DBs[i] == eGL_FRONT)
|
||||
DBs[i] = eGL_COLOR_ATTACHMENT0;
|
||||
if(m_State < WRITING)
|
||||
{
|
||||
// since we are faking the default framebuffer with our own
|
||||
// to see the results, replace back/front/left/right with color attachment 0
|
||||
if(DBs[i] == eGL_BACK_LEFT || DBs[i] == eGL_BACK_RIGHT ||
|
||||
DBs[i] == eGL_FRONT_LEFT || DBs[i] == eGL_FRONT_RIGHT)
|
||||
DBs[i] = eGL_COLOR_ATTACHMENT0;
|
||||
|
||||
// These aren't valid for glDrawBuffers but can be returned when we call glGet,
|
||||
// assume they mean left implicitly
|
||||
if(DBs[i] == eGL_BACK ||
|
||||
DBs[i] == eGL_FRONT)
|
||||
DBs[i] = eGL_COLOR_ATTACHMENT0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
struct GLRenderState
|
||||
{
|
||||
GLRenderState(const GLHookSet *funcs, Serialiser *ser);
|
||||
GLRenderState(const GLHookSet *funcs, Serialiser *ser, LogState state);
|
||||
~GLRenderState();
|
||||
|
||||
void FetchState();
|
||||
@@ -205,5 +205,6 @@ struct GLRenderState
|
||||
void Serialise(LogState state, void *ctx, WrappedOpenGL *gl);
|
||||
private:
|
||||
Serialiser *m_pSerialiser;
|
||||
LogState m_State;
|
||||
const GLHookSet *m_Real;
|
||||
};
|
||||
|
||||
@@ -683,7 +683,7 @@ void GLReplay::SavePipelineState()
|
||||
WrappedOpenGL &gl = *m_pDriver;
|
||||
GLResourceManager *rm = m_pDriver->GetResourceManager();
|
||||
|
||||
GLRenderState rs(&gl.GetHookset(), NULL);
|
||||
GLRenderState rs(&gl.GetHookset(), NULL, READING);
|
||||
rs.FetchState();
|
||||
|
||||
MakeCurrentReplayContext(&m_ReplayCtx);
|
||||
|
||||
Reference in New Issue
Block a user