Implement glPointParameter*

This commit is contained in:
baldurk
2014-11-06 23:30:00 +00:00
parent 7c7503432d
commit d0b3078b95
8 changed files with 156 additions and 0 deletions
+4
View File
@@ -181,6 +181,10 @@ enum GLChunkType
DEPTH_BOUNDS,
PATCH_PARAMI,
PATCH_PARAMFV,
POINT_PARAMF,
POINT_PARAMFV,
POINT_PARAMI,
POINT_PARAMIV,
VIEWPORT,
VIEWPORT_ARRAY,
SCISSOR,
+16
View File
@@ -134,6 +134,10 @@ const char *GLChunkNames[] =
"glDepthBoundsEXT",
"glPatchParameteri",
"glPatchParameterfv",
"glPointParameterf",
"glPointParameterfv",
"glPointParameteri",
"glPointParameteriv",
"glViewport",
"glViewportArrayv",
"glScissor",
@@ -1668,6 +1672,18 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
case PATCH_PARAMFV:
Serialise_glPatchParameterfv(eGL_NONE, NULL);
break;
case POINT_PARAMF:
Serialise_glPointParameterf(eGL_NONE, 0.0f);
break;
case POINT_PARAMFV:
Serialise_glPointParameterfv(eGL_NONE, NULL);
break;
case POINT_PARAMI:
Serialise_glPointParameteri(eGL_NONE, 0);
break;
case POINT_PARAMIV:
Serialise_glPointParameteriv(eGL_NONE, NULL);
break;
case VIEWPORT:
Serialise_glViewport(0, 0, 0, 0);
break;
+4
View File
@@ -370,6 +370,10 @@ class WrappedOpenGL
IMPLEMENT_FUNCTION_SERIALISED(void, glPolygonOffset(GLfloat factor, GLfloat units));
IMPLEMENT_FUNCTION_SERIALISED(void, glPatchParameteri(GLenum pname, GLint param));
IMPLEMENT_FUNCTION_SERIALISED(void, glPatchParameterfv(GLenum pname, const GLfloat *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glPointParameterf(GLenum pname, GLfloat param));
IMPLEMENT_FUNCTION_SERIALISED(void, glPointParameterfv(GLenum pname, const GLfloat *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glPointParameteri(GLenum pname, GLint param));
IMPLEMENT_FUNCTION_SERIALISED(void, glPointParameteriv(GLenum pname, const GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels));
+4
View File
@@ -321,6 +321,10 @@ struct GLHookSet
PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
PFNGLPATCHPARAMETERIPROC glPatchParameteri;
PFNGLPATCHPARAMETERFVPROC glPatchParameterfv;
PFNGLPOINTPARAMETERFPROC glPointParameterf;
PFNGLPOINTPARAMETERFVPROC glPointParameterfv;
PFNGLPOINTPARAMETERIPROC glPointParameteri;
PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
PFNGLMEMORYBARRIERPROC glMemoryBarrier;
PFNGLCLEARBUFFERFVPROC glClearBufferfv;
+9
View File
@@ -240,6 +240,7 @@
HookExtension(PFNGLBLENDFUNCSEPARATEIPROC, glBlendFuncSeparatei); \
HookExtension(PFNGLBLENDEQUATIONPROC, glBlendEquation); \
HookExtension(PFNGLBLENDEQUATIONIPROC, glBlendEquationi); \
HookExtensionAlias(PFNGLBLENDEQUATIONIPROC, glBlendEquationi, glBlendEquationiARB); \
HookExtension(PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate); \
HookExtension(PFNGLBLENDEQUATIONSEPARATEIPROC, glBlendEquationSeparatei); \
HookExtension(PFNGLSTENCILFUNCSEPARATEPROC, glStencilFuncSeparate); \
@@ -343,6 +344,10 @@
HookExtension(PFNGLSAMPLERPARAMETERIUIVPROC, glSamplerParameterIuiv); \
HookExtension(PFNGLPATCHPARAMETERIPROC, glPatchParameteri); \
HookExtension(PFNGLPATCHPARAMETERFVPROC, glPatchParameterfv); \
HookExtension(PFNGLPOINTPARAMETERFPROC, glPointParameterf); \
HookExtension(PFNGLPOINTPARAMETERFVPROC, glPointParameterfv); \
HookExtension(PFNGLPOINTPARAMETERIPROC, glPointParameteri); \
HookExtension(PFNGLPOINTPARAMETERIVPROC, glPointParameteriv); \
HookExtension(PFNGLDISPATCHCOMPUTEPROC, glDispatchCompute); \
HookExtension(PFNGLMEMORYBARRIERPROC, glMemoryBarrier); \
HookExtension(PFNGLCLEARBUFFERFVPROC, glClearBufferfv); \
@@ -867,6 +872,10 @@
HookWrapper3(void, glSamplerParameterIuiv, GLuint, sampler, GLenum, pname, const GLuint *, param); \
HookWrapper2(void, glPatchParameteri, GLenum, pname, GLint, value); \
HookWrapper2(void, glPatchParameterfv, GLenum, pname, const GLfloat *, values); \
HookWrapper2(void, glPointParameterf, GLenum, pname, GLfloat, param); \
HookWrapper2(void, glPointParameterfv, GLenum, pname, const GLfloat *, params); \
HookWrapper2(void, glPointParameteri, GLenum, pname, GLint, param); \
HookWrapper2(void, glPointParameteriv, GLenum, pname, const GLint *, params); \
HookWrapper3(void, glDispatchCompute, GLuint, num_groups_x, GLuint, num_groups_y, GLuint, num_groups_z); \
HookWrapper1(void, glMemoryBarrier, GLbitfield, barriers); \
HookWrapper3(void, glClearBufferfv, GLenum, buffer, GLint, drawbuffer, const GLfloat *, value); \
+12
View File
@@ -101,6 +101,9 @@ void GLRenderState::FetchState()
m_Real->glGetIntegeri_v(eGL_VERTEX_BINDING_DIVISOR, i, (GLint *)&VertexBuffers[i].Divisor);
}
m_Real->glGetFloatv(eGL_POINT_FADE_THRESHOLD_SIZE, &PointFadeThresholdSize);
m_Real->glGetIntegerv(eGL_POINT_SPRITE_COORD_ORIGIN, (GLint*)&PointSpriteOrigin);
m_Real->glGetIntegerv(eGL_CURRENT_PROGRAM, (GLint *)&Program);
m_Real->glGetIntegerv(eGL_PROGRAM_PIPELINE_BINDING, (GLint *)&Pipeline);
@@ -282,6 +285,9 @@ void GLRenderState::ApplyState()
m_Real->glBindVertexBuffer(i, VertexBuffers[i].Buffer, (GLintptr)VertexBuffers[i].Offset, (GLsizei)VertexBuffers[i].Stride);
m_Real->glVertexBindingDivisor(i, VertexBuffers[i].Divisor);
}
m_Real->glPointParameterf(eGL_POINT_FADE_THRESHOLD_SIZE, PointFadeThresholdSize);
m_Real->glPointParameteri(eGL_POINT_SPRITE_COORD_ORIGIN, (GLint)PointSpriteOrigin);
m_Real->glUseProgram(Program);
m_Real->glBindProgramPipeline(Pipeline);
@@ -432,6 +438,9 @@ void GLRenderState::Clear()
RDCEraseEl(VAO);
RDCEraseEl(VertexBuffers);
RDCEraseEl(PointFadeThresholdSize);
RDCEraseEl(PointSpriteOrigin);
RDCEraseEl(Program);
RDCEraseEl(Pipeline);
@@ -511,6 +520,9 @@ void GLRenderState::Serialise(LogState state, void *ctx, WrappedOpenGL *gl)
if(state < WRITING && ID != ResourceId()) VertexBuffers[i].Buffer = rm->GetLiveResource(ID).name;
}
m_pSerialiser->Serialise("GL_POINT_FADE_THRESHOLD_SIZE", PointFadeThresholdSize);
m_pSerialiser->Serialise("GL_POINT_SPRITE_COORD_ORIGIN", PointSpriteOrigin);
for(size_t i=0; i < ARRAY_COUNT(BufferBindings); i++)
{
ResourceId ID = ResourceId();
+3
View File
@@ -106,6 +106,9 @@ struct GLRenderState
} VertexBuffers[16];
GLuint VAO;
float PointFadeThresholdSize;
GLenum PointSpriteOrigin;
uint32_t BufferBindings[10];
struct IdxRangeBuffer
{
@@ -952,6 +952,110 @@ void WrappedOpenGL::glPatchParameterfv(GLenum pname, const GLfloat *values)
}
}
bool WrappedOpenGL::Serialise_glPointParameteri(GLenum pname, GLint param)
{
SERIALISE_ELEMENT(GLenum, PName, pname);
SERIALISE_ELEMENT(int32_t, Param, param);
if(m_State <= EXECUTING)
{
m_Real.glPointParameteri(PName, Param);
}
return true;
}
void WrappedOpenGL::glPointParameteri(GLenum pname, GLint param)
{
m_Real.glPointParameteri(pname, param);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(POINT_PARAMI);
Serialise_glPointParameteri(pname, param);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glPointParameteriv(GLenum pname, const GLint *params)
{
SERIALISE_ELEMENT(GLenum, PName, pname);
SERIALISE_ELEMENT(int32_t, Param, *params);
if(m_State <= EXECUTING)
{
m_Real.glPointParameteriv(PName, &Param);
}
return true;
}
void WrappedOpenGL::glPointParameteriv(GLenum pname, const GLint *params)
{
m_Real.glPointParameteriv(pname, params);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(POINT_PARAMIV);
Serialise_glPointParameteriv(pname, params);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glPointParameterf(GLenum pname, GLfloat param)
{
SERIALISE_ELEMENT(GLenum, PName, pname);
SERIALISE_ELEMENT(float, Param, param);
if(m_State <= EXECUTING)
{
m_Real.glPointParameterf(PName, Param);
}
return true;
}
void WrappedOpenGL::glPointParameterf(GLenum pname, GLfloat param)
{
m_Real.glPointParameterf(pname, param);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(POINT_PARAMF);
Serialise_glPointParameterf(pname, param);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glPointParameterfv(GLenum pname, const GLfloat *params)
{
SERIALISE_ELEMENT(GLenum, PName, pname);
SERIALISE_ELEMENT(float, Param, *params);
if(m_State <= EXECUTING)
{
m_Real.glPointParameterfv(PName, &Param);
}
return true;
}
void WrappedOpenGL::glPointParameterfv(GLenum pname, const GLfloat *params)
{
m_Real.glPointParameterfv(pname, params);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(POINT_PARAMFV);
Serialise_glPointParameterfv(pname, params);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
SERIALISE_ELEMENT(int32_t, X, x);