Add single depth range functions, change renderstate to fetch by index

This commit is contained in:
Baldur Karlsson
2014-06-17 16:32:16 +01:00
parent 715670d021
commit 76ad555ddf
8 changed files with 54 additions and 3 deletions
+1
View File
@@ -148,6 +148,7 @@ enum GLChunkType
COLOR_MASKI,
DEPTH_FUNC,
DEPTH_MASK,
DEPTH_RANGE,
DEPTH_RANGEARRAY,
VIEWPORT,
VIEWPORT_ARRAY,
+29
View File
@@ -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);
+9
View File
@@ -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);
+3
View File
@@ -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));
+3
View File
@@ -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;
+6
View File
@@ -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); \
+2 -2
View File
@@ -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);
+1 -1
View File
@@ -85,7 +85,7 @@ struct GLRenderState
float DepthClearValue;
struct
{
float nearZ, farZ;
double nearZ, farZ;
} DepthRanges[16];
struct