mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 10:00:40 +00:00
glCullFace and glFrontFace
This commit is contained in:
@@ -121,8 +121,10 @@ enum GLChunkType
|
||||
CLEAR_DEPTH,
|
||||
CLEAR,
|
||||
CLEARBUFFERF,
|
||||
CULL_FACE,
|
||||
ENABLE,
|
||||
DISABLE,
|
||||
FRONT_FACE,
|
||||
BLEND_FUNC,
|
||||
BLEND_COLOR,
|
||||
BLEND_FUNC_SEP,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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); \
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -62,6 +62,9 @@ struct GLRenderState
|
||||
{
|
||||
float x, y, width, height;
|
||||
} Viewports[16];
|
||||
|
||||
GLenum FrontFace;
|
||||
GLenum CullFace;
|
||||
//
|
||||
|
||||
void Serialise(LogState state, GLResourceManager *rm);
|
||||
|
||||
Reference in New Issue
Block a user