mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-08 08:40:55 +00:00
Differentiate between glDepthRangef and glDepthRange when capturing.
This prevents a crash when the captured application doesn't retrieve the glDepthRange pointer, and uses glDepthRangef instead.
This commit is contained in:
@@ -171,6 +171,7 @@ enum GLChunkType
|
||||
DEPTH_FUNC,
|
||||
DEPTH_MASK,
|
||||
DEPTH_RANGE,
|
||||
DEPTH_RANGEF,
|
||||
DEPTH_RANGEARRAY,
|
||||
DEPTH_BOUNDS,
|
||||
PATCH_PARAMI,
|
||||
|
||||
@@ -121,6 +121,7 @@ const char *GLChunkNames[] =
|
||||
"glDepthFunc",
|
||||
"glDepthMask",
|
||||
"glDepthRange",
|
||||
"glDepthRangef",
|
||||
"glDepthRangeArrayv",
|
||||
"glDepthBoundsEXT",
|
||||
"glPatchParameteri",
|
||||
@@ -1191,6 +1192,9 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
case DEPTH_RANGE:
|
||||
Serialise_glDepthRange(0, 0);
|
||||
break;
|
||||
case DEPTH_RANGEF:
|
||||
Serialise_glDepthRangef(0, 0);
|
||||
break;
|
||||
case DEPTH_RANGEARRAY:
|
||||
Serialise_glDepthRangeArrayv(0, 0, NULL);
|
||||
break;
|
||||
|
||||
@@ -506,9 +506,28 @@ void WrappedOpenGL::glDepthRange(GLdouble nearVal, GLdouble farVal)
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glDepthRangef(GLfloat nearVal, GLfloat farVal)
|
||||
{
|
||||
SERIALISE_ELEMENT(GLfloat, n, nearVal);
|
||||
SERIALISE_ELEMENT(GLfloat, f, farVal);
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glDepthRangef(n, f);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glDepthRangef(GLfloat nearVal, GLfloat farVal)
|
||||
{
|
||||
glDepthRange(nearVal, farVal);
|
||||
m_Real.glDepthRangef(nearVal, farVal);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(DEPTH_RANGEF);
|
||||
Serialise_glDepthRangef(nearVal, farVal);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v)
|
||||
|
||||
Reference in New Issue
Block a user