glCullFace and glFrontFace

This commit is contained in:
baldurk
2014-05-30 23:40:28 +01:00
parent 0dc338e563
commit 4062c81132
8 changed files with 92 additions and 8 deletions
+2
View File
@@ -121,8 +121,10 @@ enum GLChunkType
CLEAR_DEPTH,
CLEAR,
CLEARBUFFERF,
CULL_FACE,
ENABLE,
DISABLE,
FRONT_FACE,
BLEND_FUNC,
BLEND_COLOR,
BLEND_FUNC_SEP,
+50
View File
@@ -336,6 +336,56 @@ void WrappedOpenGL::glEnable(GLenum cap)
}
}
bool WrappedOpenGL::Serialise_glFrontFace(GLenum mode)
{
SERIALISE_ELEMENT(GLenum, m, mode);
if(m_State <= EXECUTING)
{
m_Real.glFrontFace(m);
}
return true;
}
void WrappedOpenGL::glFrontFace(GLenum mode)
{
m_Real.glFrontFace(mode);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(FRONT_FACE);
Serialise_glFrontFace(mode);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glCullFace(GLenum mode)
{
SERIALISE_ELEMENT(GLenum, m, mode);
if(m_State <= EXECUTING)
{
m_Real.glCullFace(m);
}
return true;
}
void WrappedOpenGL::glCullFace(GLenum mode)
{
m_Real.glCullFace(mode);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(CULL_FACE);
Serialise_glCullFace(mode);
m_ContextRecord->AddChunk(scope.Get());
}
}
void WrappedOpenGL::glHint(GLenum target, GLenum mode)
{
m_Real.glHint(target, mode);
+8
View File
@@ -78,8 +78,10 @@ const char *GLChunkNames[] =
"glClearDepth",
"glClear",
"glClearBufferfv",
"glCullFace",
"glEnable",
"glDisable",
"glFrontFace",
"glBlendFunc",
"glBlendColor",
"glBlendFuncSeparate",
@@ -973,6 +975,9 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
case CLEAR:
Serialise_glClear(0);
break;
case CULL_FACE:
Serialise_glCullFace(eGL_UNKNOWN_ENUM);
break;
case CLEARBUFFERF:
Serialise_glClearBufferfv(eGL_UNKNOWN_ENUM, 0, NULL);
break;
@@ -982,6 +987,9 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
case ENABLE:
Serialise_glEnable(eGL_UNKNOWN_ENUM);
break;
case FRONT_FACE:
Serialise_glFrontFace(eGL_UNKNOWN_ENUM);
break;
case BLEND_FUNC:
glBlendFunc(eGL_UNKNOWN_ENUM, eGL_UNKNOWN_ENUM);
break;
+2
View File
@@ -274,9 +274,11 @@ class WrappedOpenGL
IMPLEMENT_FUNCTION_SERIALISED(void, glClear(GLbitfield mask));
IMPLEMENT_FUNCTION_SERIALISED(void, glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha));
IMPLEMENT_FUNCTION_SERIALISED(void, glClearDepth(GLclampd depth));
IMPLEMENT_FUNCTION_SERIALISED(void, glCullFace(GLenum cap));
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthFunc(GLenum func));
IMPLEMENT_FUNCTION_SERIALISED(void, glDisable(GLenum cap));
IMPLEMENT_FUNCTION_SERIALISED(void, glEnable(GLenum cap));
IMPLEMENT_FUNCTION_SERIALISED(void, glFrontFace(GLenum cap));
IMPLEMENT_FUNCTION_SERIALISED(GLenum, glGetError());
IMPLEMENT_FUNCTION_SERIALISED(void, glGetFloatv(GLenum pname, GLfloat *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetIntegerv(GLenum pname, GLint *params));
+2
View File
@@ -37,10 +37,12 @@ struct GLHookSet
PFNGLCLEARPROC glClear;
PFNGLCLEARCOLORPROC glClearColor;
PFNGLCLEARDEPTHPROC glClearDepth;
PFNGLCULLFACEPROC glCullFace;
PFNGLDEPTHFUNCPROC glDepthFunc;
PFNGLDISABLEPROC glDisable;
PFNGLDRAWARRAYSPROC glDrawArrays;
PFNGLENABLEPROC glEnable;
PFNGLFRONTFACEPROC glFrontFace;
PFNGLGENTEXTURESPROC glGenTextures;
PFNGLDELETETEXTURESPROC glDeleteTextures;
PFNGLGETERRORPROC glGetError;
+14 -8
View File
@@ -37,10 +37,12 @@
HookInit(glClear); \
HookInit(glClearColor); \
HookInit(glClearDepth); \
HookInit(glCullFace); \
HookInit(glDepthFunc); \
HookInit(glDisable); \
HookInit(glDrawArrays); \
HookInit(glEnable); \
HookInit(glFrontFace); \
HookInit(glGenTextures); \
HookInit(glDeleteTextures); \
HookInit(glGetError); \
@@ -123,9 +125,9 @@
HookExtension(PFNGLUSEPROGRAMPROC, glUseProgram); \
HookExtension(PFNGLGETPROGRAMIVPROC, glGetProgramiv); \
HookExtension(PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog); \
HookExtension(PFNGLGETPROGRAMINTERFACEIVPROC, glGetProgramInterfaceiv); \
HookExtension(PFNGLGETPROGRAMRESOURCEIVPROC, glGetProgramResourceiv); \
HookExtension(PFNGLGETPROGRAMRESOURCENAMEPROC, glGetProgramResourceName); \
HookExtension(PFNGLGETPROGRAMINTERFACEIVPROC, glGetProgramInterfaceiv); \
HookExtension(PFNGLGETPROGRAMRESOURCEIVPROC, glGetProgramResourceiv); \
HookExtension(PFNGLGETPROGRAMRESOURCENAMEPROC, glGetProgramResourceName); \
HookExtension(PFNGLDEBUGMESSAGECALLBACKPROC, glDebugMessageCallback); \
HookExtensionAlias(PFNGLDEBUGMESSAGECALLBACKPROC, glDebugMessageCallback, glDebugMessageCallbackARB); \
HookExtension(PFNGLGETOBJECTLABELPROC, glGetObjectLabel); \
@@ -172,10 +174,12 @@
HookExtension(PFNGLCLEARPROC, glClear); \
HookExtension(PFNGLCLEARCOLORPROC, glClearColor); \
HookExtension(PFNGLCLEARDEPTHPROC, glClearDepth); \
HookExtension(PFNGLCULLFACEPROC, glCullFace); \
HookExtension(PFNGLDEPTHFUNCPROC, glDepthFunc); \
HookExtension(PFNGLDISABLEPROC, glDisable); \
HookExtension(PFNGLDRAWARRAYSPROC, glDrawArrays); \
HookExtension(PFNGLENABLEPROC, glEnable); \
HookExtension(PFNGLFRONTFACEPROC, glFrontFace); \
HookExtension(PFNGLGENTEXTURESPROC, glGenTextures); \
HookExtension(PFNGLDELETETEXTURESPROC, glDeleteTextures); \
HookExtension(PFNGLGETERRORPROC, glGetError); \
@@ -225,10 +229,12 @@
HookWrapper1(void, glClear, GLbitfield, mask); \
HookWrapper4(void, glClearColor, GLfloat, red, GLfloat, green, GLfloat, blue, GLfloat, alpha); \
HookWrapper1(void, glClearDepth, GLdouble, depth); \
HookWrapper1(void, glCullFace, GLenum, mode); \
HookWrapper1(void, glDepthFunc, GLenum, func); \
HookWrapper1(void, glDisable, GLenum, cap); \
HookWrapper3(void, glDrawArrays, GLenum, mode, GLint, first, GLsizei, count); \
HookWrapper1(void, glEnable, GLenum, cap); \
HookWrapper1(void, glFrontFace, GLenum, mode); \
HookWrapper2(void, glGenTextures, GLsizei, n, GLuint *, textures); \
HookWrapper2(void, glDeleteTextures, GLsizei, n, const GLuint *, textures); \
HookWrapper0(GLenum, glGetError); \
@@ -295,7 +301,7 @@
HookWrapper3(void, glGetInteger64i_v, GLenum, target, GLuint, index, GLint64 *, data); \
HookWrapper1(GLenum, glCheckFramebufferStatus, GLenum, target); \
HookWrapper4(void, glBlendFuncSeparate, GLenum, sfactorRGB, GLenum, dfactorRGB, GLenum, sfactorAlpha, GLenum, dfactorAlpha); \
HookWrapper5(void, glBlendFuncSeparatei, GLuint, buf, GLenum, sfactorRGB, GLenum, dfactorRGB, GLenum, sfactorAlpha, GLenum, dfactorAlpha); \
HookWrapper5(void, glBlendFuncSeparatei, GLuint, buf, GLenum, srcRGB, GLenum, dstRGB, GLenum, srcAlpha, GLenum, dstAlpha); \
HookWrapper2(void, glBlendEquationSeparate, GLenum, modeRGB, GLenum, modeAlpha); \
HookWrapper3(void, glBlendEquationSeparatei, GLuint, buf, GLenum, modeRGB, GLenum, modeAlpha); \
HookWrapper1(GLuint, glCreateShader, GLenum, type); \
@@ -311,9 +317,9 @@
HookWrapper1(void, glUseProgram, GLuint, program); \
HookWrapper3(void, glGetProgramiv, GLuint, program, GLenum, pname, GLint *, params); \
HookWrapper4(void, glGetProgramInfoLog, GLuint, program, GLsizei, bufSize, GLsizei *, length, GLchar *, infoLog); \
HookWrapper4(void, glGetProgramInterfaceiv, GLuint, program, GLenum, programInterface, GLenum, pname, GLint *, params); \
HookWrapper8(void, glGetProgramResourceiv, GLuint, program, GLenum, programInterface, GLuint, index, GLsizei, propCount, const GLenum *, props, GLsizei, bufSize, GLsizei *, length, GLint *, params); \
HookWrapper6(void, glGetProgramResourceName, GLuint, program, GLenum, programInterface, GLuint, index, GLsizei, bufSize, GLsizei *, length, GLchar *, name); \
HookWrapper4(void, glGetProgramInterfaceiv, GLuint, program, GLenum, programInterface, GLenum, pname, GLint *, params); \
HookWrapper8(void, glGetProgramResourceiv, GLuint, program, GLenum, programInterface, GLuint, index, GLsizei, propCount, const GLenum *, props, GLsizei, bufSize, GLsizei *, length, GLint *, params); \
HookWrapper6(void, glGetProgramResourceName, GLuint, program, GLenum, programInterface, GLuint, index, GLsizei, bufSize, GLsizei *, length, GLchar *, name); \
HookWrapper2(void, glDebugMessageCallback, GLDEBUGPROC, callback, const void *, userParam); \
HookWrapper5(void, glGetObjectLabel, GLenum, identifier, GLuint, name, GLsizei, bufSize, GLsizei *, length, GLchar *, label); \
HookWrapper4(void, glObjectLabel, GLenum, identifier, GLuint, name, GLsizei, length, const GLchar *, label); \
@@ -344,7 +350,7 @@
HookWrapper3(void, glClearBufferfv, GLenum, buffer, GLint, drawbuffer, const GLfloat *, value); \
HookWrapper5(void, glViewportIndexedf, GLuint, index, GLfloat, x, GLfloat, y, GLfloat, w, GLfloat, h); \
HookWrapper2(void, glViewportIndexedfv, GLuint, index, const GLfloat *, v); \
HookWrapper3(void, glViewportArrayv, GLuint, first, GLuint, count, const GLfloat *, v); \
HookWrapper3(void, glViewportArrayv, GLuint, first, GLsizei, count, const GLfloat *, v); \
HookWrapper2(GLint, glGetUniformLocation, GLuint, program, const GLchar *, name); \
HookWrapper7(void, glGetActiveUniform, GLuint, program, GLuint, index, GLsizei, bufSize, GLsizei *, length, GLint *, size, GLenum *, type, GLchar *, name); \
HookWrapper3(void, glGetUniformfv, GLuint, program, GLint, location, GLfloat *, params); \
+11
View File
@@ -95,6 +95,9 @@ void GLRenderState::FetchState()
for(int i=0; i < ARRAY_COUNT(Viewports); i++)
m_Real->glGetFloati_v(eGL_VIEWPORT, i, &Viewports[i].x);
m_Real->glGetIntegerv(eGL_FRONT_FACE, (GLint *)&FrontFace);
m_Real->glGetIntegerv(eGL_CULL_FACE_MODE, (GLint *)&CullFace);
}
void GLRenderState::ApplyState()
@@ -139,6 +142,9 @@ void GLRenderState::ApplyState()
m_Real->glBlendColor(BlendColor[0], BlendColor[1], BlendColor[2], BlendColor[3]);
m_Real->glViewportArrayv(0, ARRAY_COUNT(Viewports), &Viewports[0].x);
m_Real->glFrontFace(FrontFace);
m_Real->glCullFace(CullFace);
}
void GLRenderState::Clear()
@@ -153,6 +159,8 @@ void GLRenderState::Clear()
RDCEraseEl(Blends);
RDCEraseEl(BlendColor);
RDCEraseEl(Viewports);
RDCEraseEl(FrontFace);
RDCEraseEl(CullFace);
}
void GLRenderState::Serialise(LogState state, GLResourceManager *rm)
@@ -217,4 +225,7 @@ void GLRenderState::Serialise(LogState state, GLResourceManager *rm)
m_pSerialiser->Serialise("GL_VIEWPORT.w", Viewports[i].width);
m_pSerialiser->Serialise("GL_VIEWPORT.h", Viewports[i].height);
}
m_pSerialiser->Serialise("GL_FRONT_FACE", FrontFace);
m_pSerialiser->Serialise("GL_CULL_FACE_MODE", CullFace);
}
+3
View File
@@ -62,6 +62,9 @@ struct GLRenderState
{
float x, y, width, height;
} Viewports[16];
GLenum FrontFace;
GLenum CullFace;
//
void Serialise(LogState state, GLResourceManager *rm);