mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 17:40:39 +00:00
Add single depth range functions, change renderstate to fetch by index
This commit is contained in:
@@ -148,6 +148,7 @@ enum GLChunkType
|
||||
COLOR_MASKI,
|
||||
DEPTH_FUNC,
|
||||
DEPTH_MASK,
|
||||
DEPTH_RANGE,
|
||||
DEPTH_RANGEARRAY,
|
||||
VIEWPORT,
|
||||
VIEWPORT_ARRAY,
|
||||
|
||||
@@ -323,6 +323,35 @@ void WrappedOpenGL::glDepthMask(GLboolean flag)
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glDepthRange(GLdouble nearVal, GLdouble farVal)
|
||||
{
|
||||
SERIALISE_ELEMENT(GLdouble, n, nearVal);
|
||||
SERIALISE_ELEMENT(GLdouble, f, farVal);
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glDepthRange(n, f);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glDepthRange(GLdouble nearVal, GLdouble farVal)
|
||||
{
|
||||
m_Real.glDepthRange(nearVal, farVal);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(DEPTH_RANGE);
|
||||
Serialise_glDepthRange(nearVal, farVal);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glDepthRangef(GLfloat nearVal, GLfloat farVal)
|
||||
{
|
||||
glDepthRange(nearVal, farVal);
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v)
|
||||
{
|
||||
SERIALISE_ELEMENT(uint32_t, idx, first);
|
||||
|
||||
@@ -105,6 +105,7 @@ const char *GLChunkNames[] =
|
||||
"glColorMaski",
|
||||
"glDepthFunc",
|
||||
"glDepthMask",
|
||||
"glDepthRange",
|
||||
"glDepthRangeArrayv",
|
||||
"glViewport",
|
||||
"glViewportArrayv",
|
||||
@@ -1150,6 +1151,9 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
case DEPTH_MASK:
|
||||
Serialise_glDepthMask(0);
|
||||
break;
|
||||
case DEPTH_RANGE:
|
||||
Serialise_glDepthRange(0, 0);
|
||||
break;
|
||||
case DEPTH_RANGEARRAY:
|
||||
Serialise_glDepthRangeArrayv(0, 0, NULL);
|
||||
break;
|
||||
@@ -1615,6 +1619,11 @@ void WrappedOpenGL::glGetFloati_v(GLenum pname, GLuint index, GLfloat *data)
|
||||
m_Real.glGetFloati_v(pname, index, data);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetDoublei_v(GLenum pname, GLuint index, GLdouble *data)
|
||||
{
|
||||
m_Real.glGetDoublei_v(pname, index, data);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetInteger64i_v(GLenum pname, GLuint index, GLint64 *data)
|
||||
{
|
||||
m_Real.glGetInteger64i_v(pname, index, data);
|
||||
|
||||
@@ -283,6 +283,8 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCullFace(GLenum cap));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthFunc(GLenum func));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthMask(GLboolean flag));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthRange(GLdouble nearVal, GLdouble farVal));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthRangef(GLfloat nearVal, GLfloat farVal));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDisable(GLenum cap));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glEnable(GLenum cap));
|
||||
@@ -297,6 +299,7 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetBooleanv(GLenum pname, GLboolean *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetIntegeri_v(GLenum pname, GLuint index, GLint *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetFloati_v(GLenum pname, GLuint index, GLfloat *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetDoublei_v(GLenum pname, GLuint index, GLdouble *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetBooleani_v(GLenum pname, GLuint index, GLboolean *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(const GLubyte *, glGetStringi(GLenum name, GLuint i));
|
||||
|
||||
@@ -108,6 +108,7 @@ struct GLHookSet
|
||||
PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
|
||||
PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
|
||||
PFNGLGETFLOATI_VPROC glGetFloati_v;
|
||||
PFNGLGETDOUBLEI_VPROC glGetDoublei_v;
|
||||
PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
|
||||
PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
|
||||
PFNGLBLENDCOLORPROC glBlendColor;
|
||||
@@ -117,6 +118,8 @@ struct GLHookSet
|
||||
PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
|
||||
PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
|
||||
PFNGLCOLORMASKIPROC glColorMaski;
|
||||
PFNGLDEPTHRANGEPROC glDepthRange;
|
||||
PFNGLDEPTHRANGEFPROC glDepthRangef;
|
||||
PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv;
|
||||
PFNGLCREATESHADERPROC glCreateShader;
|
||||
PFNGLDELETESHADERPROC glDeleteShader;
|
||||
|
||||
@@ -119,6 +119,7 @@
|
||||
HookExtension(PFNGLGETBOOLEANI_VPROC, glGetBooleani_v); \
|
||||
HookExtension(PFNGLGETINTEGERI_VPROC, glGetIntegeri_v); \
|
||||
HookExtension(PFNGLGETFLOATI_VPROC, glGetFloati_v); \
|
||||
HookExtension(PFNGLGETDOUBLEI_VPROC, glGetDoublei_v); \
|
||||
HookExtension(PFNGLGETINTEGER64I_VPROC, glGetInteger64i_v); \
|
||||
HookExtension(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus); \
|
||||
HookExtension(PFNGLBLENDCOLORPROC, glBlendColor); \
|
||||
@@ -128,6 +129,8 @@
|
||||
HookExtension(PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate); \
|
||||
HookExtension(PFNGLBLENDEQUATIONSEPARATEIPROC, glBlendEquationSeparatei); \
|
||||
HookExtension(PFNGLCOLORMASKIPROC, glColorMaski); \
|
||||
HookExtension(PFNGLDEPTHRANGEPROC, glDepthRange); \
|
||||
HookExtension(PFNGLDEPTHRANGEFPROC, glDepthRangef); \
|
||||
HookExtension(PFNGLDEPTHRANGEARRAYVPROC, glDepthRangeArrayv); \
|
||||
HookExtension(PFNGLCREATESHADERPROC, glCreateShader); \
|
||||
HookExtension(PFNGLDELETESHADERPROC, glDeleteShader); \
|
||||
@@ -371,6 +374,7 @@
|
||||
HookWrapper3(void, glGetBooleani_v, GLenum, target, GLuint, index, GLboolean *, data); \
|
||||
HookWrapper3(void, glGetIntegeri_v, GLenum, target, GLuint, index, GLint *, data); \
|
||||
HookWrapper3(void, glGetFloati_v, GLenum, target, GLuint, index, GLfloat *, data); \
|
||||
HookWrapper3(void, glGetDoublei_v, GLenum, target, GLuint, index, GLdouble *, data); \
|
||||
HookWrapper3(void, glGetInteger64i_v, GLenum, target, GLuint, index, GLint64 *, data); \
|
||||
HookWrapper1(GLenum, glCheckFramebufferStatus, GLenum, target); \
|
||||
HookWrapper4(void, glBlendColor, GLfloat, red, GLfloat, green, GLfloat, blue, GLfloat, alpha); \
|
||||
@@ -380,6 +384,8 @@
|
||||
HookWrapper2(void, glBlendEquationSeparate, GLenum, modeRGB, GLenum, modeAlpha); \
|
||||
HookWrapper3(void, glBlendEquationSeparatei, GLuint, buf, GLenum, modeRGB, GLenum, modeAlpha); \
|
||||
HookWrapper5(void, glColorMaski, GLuint, index, GLboolean, r, GLboolean, g, GLboolean, b, GLboolean, a); \
|
||||
HookWrapper2(void, glDepthRange, GLdouble, nearVal, GLdouble, farVal); \
|
||||
HookWrapper2(void, glDepthRangef, GLfloat, nearVal, GLfloat, farVal); \
|
||||
HookWrapper3(void, glDepthRangeArrayv, GLuint, first, GLsizei, count, const GLdouble *, v); \
|
||||
HookWrapper1(GLuint, glCreateShader, GLenum, type); \
|
||||
HookWrapper1(void, glDeleteShader, GLuint, shader); \
|
||||
|
||||
@@ -120,8 +120,8 @@ void GLRenderState::FetchState()
|
||||
m_Real->glGetBooleanv(eGL_DEPTH_WRITEMASK, &DepthWriteMask);
|
||||
m_Real->glGetFloatv(eGL_DEPTH_CLEAR_VALUE, &DepthClearValue);
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(DepthRanges); i++)
|
||||
m_Real->glGetFloatv(eGL_DEPTH_RANGE, &DepthRanges[i].nearZ);
|
||||
for(GLuint i=0; i < (GLuint)ARRAY_COUNT(DepthRanges); i++)
|
||||
m_Real->glGetDoublei_v(eGL_DEPTH_RANGE, i, &DepthRanges[i].nearZ);
|
||||
|
||||
for(size_t i=0; i < ARRAY_COUNT(ColorMasks); i++)
|
||||
m_Real->glGetBooleanv(eGL_COLOR_WRITEMASK, &ColorMasks[i].red);
|
||||
|
||||
@@ -85,7 +85,7 @@ struct GLRenderState
|
||||
float DepthClearValue;
|
||||
struct
|
||||
{
|
||||
float nearZ, farZ;
|
||||
double nearZ, farZ;
|
||||
} DepthRanges[16];
|
||||
|
||||
struct
|
||||
|
||||
Reference in New Issue
Block a user