Implement glBlendEquation{,i}

This commit is contained in:
baldurk
2014-11-06 23:18:42 +00:00
parent 840d2ad5d8
commit 7c7503432d
6 changed files with 69 additions and 0 deletions
+2
View File
@@ -160,6 +160,8 @@ enum GLChunkType
BLEND_COLOR,
BLEND_FUNC_SEP,
BLEND_FUNC_SEPI,
BLEND_EQ,
BLEND_EQI,
BLEND_EQ_SEP,
BLEND_EQ_SEPI,
STENCIL_OP,
+8
View File
@@ -113,6 +113,8 @@ const char *GLChunkNames[] =
"glBlendColor",
"glBlendFuncSeparate",
"glBlendFuncSeparatei",
"glBlendEquation",
"glBlendEquationi",
"glBlendEquationSeparate",
"glBlendEquationSeparatei",
"glStencilOp",
@@ -1601,6 +1603,12 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
case BLEND_FUNC_SEPI:
Serialise_glBlendFuncSeparatei(0, eGL_NONE, eGL_NONE, eGL_NONE, eGL_NONE);
break;
case BLEND_EQ:
Serialise_glBlendEquation(eGL_NONE);
break;
case BLEND_EQI:
Serialise_glBlendEquationi(0, eGL_NONE);
break;
case BLEND_EQ_SEP:
Serialise_glBlendEquationSeparate(eGL_NONE, eGL_NONE);
break;
+2
View File
@@ -331,6 +331,8 @@ class WrappedOpenGL
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha));
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha));
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendFuncSeparatei(GLuint buf, GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha));
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendEquation(GLenum mode));
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendEquationi(GLuint buf, GLenum mode));
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha));
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha));
IMPLEMENT_FUNCTION_SERIALISED(void, glStencilFunc(GLenum func, GLint ref, GLuint mask));
+2
View File
@@ -217,6 +217,8 @@ struct GLHookSet
PFNGLBLENDFUNCIPROC glBlendFunci;
PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;
PFNGLBLENDEQUATIONPROC glBlendEquation;
PFNGLBLENDEQUATIONIPROC glBlendEquationi; // aliases glBlendEquationiARB
PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate;
+4
View File
@@ -238,6 +238,8 @@
HookExtension(PFNGLBLENDFUNCIPROC, glBlendFunci); \
HookExtension(PFNGLBLENDFUNCSEPARATEPROC, glBlendFuncSeparate); \
HookExtension(PFNGLBLENDFUNCSEPARATEIPROC, glBlendFuncSeparatei); \
HookExtension(PFNGLBLENDEQUATIONPROC, glBlendEquation); \
HookExtension(PFNGLBLENDEQUATIONIPROC, glBlendEquationi); \
HookExtension(PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate); \
HookExtension(PFNGLBLENDEQUATIONSEPARATEIPROC, glBlendEquationSeparatei); \
HookExtension(PFNGLSTENCILFUNCSEPARATEPROC, glStencilFuncSeparate); \
@@ -761,6 +763,8 @@
HookWrapper3(void, glBlendFunci, GLuint, buf, GLenum, src, GLenum, dst); \
HookWrapper4(void, glBlendFuncSeparate, GLenum, sfactorRGB, GLenum, dfactorRGB, GLenum, sfactorAlpha, GLenum, dfactorAlpha); \
HookWrapper5(void, glBlendFuncSeparatei, GLuint, buf, GLenum, srcRGB, GLenum, dstRGB, GLenum, srcAlpha, GLenum, dstAlpha); \
HookWrapper1(void, glBlendEquation, GLenum, mode); \
HookWrapper2(void, glBlendEquationi, GLuint, buf, GLenum, mode); \
HookWrapper2(void, glBlendEquationSeparate, GLenum, modeRGB, GLenum, modeAlpha); \
HookWrapper3(void, glBlendEquationSeparatei, GLuint, buf, GLenum, modeRGB, GLenum, modeAlpha); \
HookWrapper4(void, glStencilFuncSeparate, GLenum, face, GLenum, func, GLint, ref, GLuint, mask); \
@@ -165,6 +165,57 @@ void WrappedOpenGL::glBlendFuncSeparatei(GLuint buf, GLenum sfactorRGB, GLenum d
}
}
bool WrappedOpenGL::Serialise_glBlendEquation(GLenum mode)
{
SERIALISE_ELEMENT(GLenum, m, mode);
if(m_State <= EXECUTING)
{
m_Real.glBlendEquation(m);
}
return true;
}
void WrappedOpenGL::glBlendEquation(GLenum mode)
{
m_Real.glBlendEquation(mode);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(BLEND_EQ);
Serialise_glBlendEquation(mode);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glBlendEquationi(GLuint buf, GLenum mode)
{
SERIALISE_ELEMENT(uint32_t, b, buf);
SERIALISE_ELEMENT(GLenum, m, mode);
if(m_State <= EXECUTING)
{
m_Real.glBlendEquationi(b, m);
}
return true;
}
void WrappedOpenGL::glBlendEquationi(GLuint buf, GLenum mode)
{
m_Real.glBlendEquationi(buf, mode);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(BLEND_EQI);
Serialise_glBlendEquationi(buf, mode);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
{
SERIALISE_ELEMENT(GLenum, m1, modeRGB);