From 8a4b32f2a3f6cc1c5895fc7d1bd549e3840280c4 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 30 May 2014 22:54:19 +0100 Subject: [PATCH] Add glClearColor and glClearDepth --- renderdoc/driver/gl/gl_common.h | 2 ++ renderdoc/driver/gl/gl_context_driver.cpp | 43 +++++++++++++++++++++-- renderdoc/driver/gl/gl_driver.cpp | 10 +++++- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/gl/gl_common.h b/renderdoc/driver/gl/gl_common.h index 1d5baa5ea..735403044 100644 --- a/renderdoc/driver/gl/gl_common.h +++ b/renderdoc/driver/gl/gl_common.h @@ -117,6 +117,8 @@ enum GLChunkType ROTATEF, // + CLEAR_COLOR, + CLEAR_DEPTH, CLEAR, CLEARBUFFERF, ENABLE, diff --git a/renderdoc/driver/gl/gl_context_driver.cpp b/renderdoc/driver/gl/gl_context_driver.cpp index 99200bc9d..904467d1a 100644 --- a/renderdoc/driver/gl/gl_context_driver.cpp +++ b/renderdoc/driver/gl/gl_context_driver.cpp @@ -193,18 +193,57 @@ void WrappedOpenGL::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum } } +bool WrappedOpenGL::Serialise_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) +{ + SERIALISE_ELEMENT(float, r, red); + SERIALISE_ELEMENT(float, g, green); + SERIALISE_ELEMENT(float, b, blue); + SERIALISE_ELEMENT(float, a, alpha); + + if(m_State <= EXECUTING) + { + m_Real.glClearColor(r, g, b, a); + } + + return true; +} + void WrappedOpenGL::glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { m_Real.glClearColor(red, green, blue, alpha); - RDCUNIMPLEMENTED(); + if(m_State == WRITING_CAPFRAME) + { + SCOPED_SERIALISE_CONTEXT(CLEAR_COLOR); + Serialise_glClearColor(red, green, blue, alpha); + + m_ContextRecord->AddChunk(scope.Get()); + } +} + +bool WrappedOpenGL::Serialise_glClearDepth(GLclampd depth) +{ + SERIALISE_ELEMENT(double, d, depth); + + if(m_State <= EXECUTING) + { + m_Real.glClearDepth(d); + } + + return true; } void WrappedOpenGL::glClearDepth(GLclampd depth) { m_Real.glClearDepth(depth); - RDCUNIMPLEMENTED(); + if(m_State == WRITING_CAPFRAME) + { + SCOPED_SERIALISE_CONTEXT(CLEAR_DEPTH); + Serialise_glClearDepth(depth); + + m_ContextRecord->AddChunk(scope.Get()); + } } bool WrappedOpenGL::Serialise_glDepthFunc(GLenum func) diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index 6b6160f91..a4e6f1418 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -74,6 +74,8 @@ const char *GLChunkNames[] = "glRotatef", // + "glClearColor", + "glClearDepth", "glClear", "glClearBufferfv", "glEnable", @@ -960,7 +962,13 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context) case BIND_SAMPLER: Serialise_glBindSampler(0, 0); break; - + + case CLEAR_COLOR: + Serialise_glClearColor(0, 0, 0, 0); + break; + case CLEAR_DEPTH: + Serialise_glClearDepth(0); + break; case CLEAR: Serialise_glClear(0); break;