Only account for faked backbuffer in renderstate when replaying

This commit is contained in:
baldurk
2014-11-01 16:46:25 +00:00
parent 8d8c8a7c47
commit 360199b2ce
4 changed files with 20 additions and 15 deletions
+1 -1
View File
@@ -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)
{
+16 -12
View File
@@ -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
{
+2 -1
View File
@@ -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;
};
+1 -1
View File
@@ -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);