mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-06 14:51:04 +00:00
Implement all glUniformN_ and glProgramUniformMatrixMxN_ variants
* Using macros for most implementations redirecting to either Serialise_glUniformVector or Serialise_glUniformMatrix
This commit is contained in:
@@ -280,6 +280,63 @@ ResourceFormat MakeResourceFormat(WrappedOpenGL &gl, GLenum target, GLenum fmt)
|
||||
return ret;
|
||||
}
|
||||
|
||||
template<>
|
||||
string ToStrHelper<false, WrappedOpenGL::UniformType>::Get(const WrappedOpenGL::UniformType &el)
|
||||
{
|
||||
switch(el)
|
||||
{
|
||||
case WrappedOpenGL::UNIFORM_UNKNOWN: return "unk";
|
||||
|
||||
#define VEC2STR(suffix) case WrappedOpenGL::CONCAT(VEC, suffix): return STRINGIZE(suffix);
|
||||
VEC2STR(1fv)
|
||||
VEC2STR(1iv)
|
||||
VEC2STR(1uiv)
|
||||
VEC2STR(1dv)
|
||||
VEC2STR(2fv)
|
||||
VEC2STR(2iv)
|
||||
VEC2STR(2uiv)
|
||||
VEC2STR(2dv)
|
||||
VEC2STR(3fv)
|
||||
VEC2STR(3iv)
|
||||
VEC2STR(3uiv)
|
||||
VEC2STR(3dv)
|
||||
VEC2STR(4fv)
|
||||
VEC2STR(4iv)
|
||||
VEC2STR(4uiv)
|
||||
VEC2STR(4dv)
|
||||
#undef VEC2STR
|
||||
|
||||
#define MAT2STR(suffix) case WrappedOpenGL::CONCAT(MAT, suffix): return STRINGIZE(suffix);
|
||||
MAT2STR(2fv)
|
||||
MAT2STR(2x3fv)
|
||||
MAT2STR(2x4fv)
|
||||
MAT2STR(3fv)
|
||||
MAT2STR(3x2fv)
|
||||
MAT2STR(3x4fv)
|
||||
MAT2STR(4fv)
|
||||
MAT2STR(4x2fv)
|
||||
MAT2STR(4x3fv)
|
||||
MAT2STR(2dv)
|
||||
MAT2STR(2x3dv)
|
||||
MAT2STR(2x4dv)
|
||||
MAT2STR(3dv)
|
||||
MAT2STR(3x2dv)
|
||||
MAT2STR(3x4dv)
|
||||
MAT2STR(4dv)
|
||||
MAT2STR(4x2dv)
|
||||
MAT2STR(4x3dv)
|
||||
#undef MAT2STR
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
char tostrBuf[256] = {0};
|
||||
StringFormat::snprintf(tostrBuf, 255, "WrappedOpenGL::UniformType<%d>", el);
|
||||
|
||||
return tostrBuf;
|
||||
}
|
||||
|
||||
template<>
|
||||
string ToStrHelper<false, RDCGLenum>::Get(const RDCGLenum &el)
|
||||
{
|
||||
|
||||
@@ -203,27 +203,6 @@ const char *GLChunkNames[] =
|
||||
"EndCapture",
|
||||
};
|
||||
|
||||
template<>
|
||||
string ToStrHelper<false, WrappedOpenGL::UniformType>::Get(const WrappedOpenGL::UniformType &el)
|
||||
{
|
||||
switch(el)
|
||||
{
|
||||
case WrappedOpenGL::UNIFORM_UNKNOWN: return "unk";
|
||||
case WrappedOpenGL::VEC1FV: return "1fv";
|
||||
case WrappedOpenGL::VEC1IV: return "1iv";
|
||||
case WrappedOpenGL::VEC1UIV: return "1uiv";
|
||||
case WrappedOpenGL::VEC2FV: return "2fv";
|
||||
case WrappedOpenGL::VEC3FV: return "3fv";
|
||||
case WrappedOpenGL::VEC4FV: return "4fv";
|
||||
case WrappedOpenGL::MAT4FV: return "4fv";
|
||||
}
|
||||
|
||||
char tostrBuf[256] = {0};
|
||||
StringFormat::snprintf(tostrBuf, 255, "WrappedOpenGL::UniformType<%d>", el);
|
||||
|
||||
return tostrBuf;
|
||||
}
|
||||
|
||||
GLInitParams::GLInitParams()
|
||||
{
|
||||
SerialiseVersion = GL_SERIALISE_VERSION;
|
||||
|
||||
+131
-14
@@ -558,14 +558,45 @@ class WrappedOpenGL
|
||||
{
|
||||
UNIFORM_UNKNOWN,
|
||||
|
||||
VEC1FV,
|
||||
VEC1IV,
|
||||
VEC1UIV,
|
||||
VEC2FV,
|
||||
VEC3FV,
|
||||
VEC4FV,
|
||||
VEC1fv,
|
||||
VEC1iv,
|
||||
VEC1uiv,
|
||||
VEC1dv,
|
||||
|
||||
MAT4FV,
|
||||
VEC2fv,
|
||||
VEC2iv,
|
||||
VEC2uiv,
|
||||
VEC2dv,
|
||||
|
||||
VEC3fv,
|
||||
VEC3iv,
|
||||
VEC3uiv,
|
||||
VEC3dv,
|
||||
|
||||
VEC4fv,
|
||||
VEC4iv,
|
||||
VEC4uiv,
|
||||
VEC4dv,
|
||||
|
||||
MAT2fv,
|
||||
MAT2x3fv,
|
||||
MAT2x4fv,
|
||||
MAT3fv,
|
||||
MAT3x2fv,
|
||||
MAT3x4fv,
|
||||
MAT4fv,
|
||||
MAT4x2fv,
|
||||
MAT4x3fv,
|
||||
|
||||
MAT2dv,
|
||||
MAT2x3dv,
|
||||
MAT2x4dv,
|
||||
MAT3dv,
|
||||
MAT3x2dv,
|
||||
MAT3x4dv,
|
||||
MAT4dv,
|
||||
MAT4x2dv,
|
||||
MAT4x3dv,
|
||||
};
|
||||
|
||||
bool Serialise_glUniformMatrix(GLint location, GLsizei count, GLboolean transpose, const void *value, UniformType type);
|
||||
@@ -574,25 +605,111 @@ class WrappedOpenGL
|
||||
bool Serialise_glProgramUniformMatrix(GLuint program, GLint location, GLsizei count, GLboolean transpose, const void *value, UniformType type);
|
||||
bool Serialise_glProgramUniformVector(GLuint program, GLint location, GLsizei count, const void *value, UniformType type);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1f(GLint location, GLfloat value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1i(GLint location, GLint value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1ui(GLint location, GLuint value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1f(GLint location, GLfloat v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1i(GLint location, GLint v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1ui(GLint location, GLuint v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1d(GLint location, GLdouble v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform2f(GLint location, GLfloat v0, GLfloat v1));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform2i(GLint location, GLint v0, GLint v1));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform2ui(GLint location, GLuint v0, GLuint v1));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform2d(GLint location, GLdouble v0, GLdouble v1));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3i(GLint location, GLint v0, GLint v1, GLint v2));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3d(GLint location, GLdouble v0, GLdouble v1, GLdouble v2));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4d(GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1iv(GLint location, GLsizei count, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1uiv(GLint location, GLsizei count, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1fv(GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform1dv(GLint location, GLsizei count, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform2iv(GLint location, GLsizei count, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform2uiv(GLint location, GLsizei count, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform2fv(GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform2dv(GLint location, GLsizei count, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3iv(GLint location, GLsizei count, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3uiv(GLint location, GLsizei count, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3fv(GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3dv(GLint location, GLsizei count, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4iv(GLint location, GLsizei count, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4uiv(GLint location, GLsizei count, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4fv(GLint location, GLsizei count, const GLfloat *value));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4dv(GLint location, GLsizei count, const GLdouble *value));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1f(GLuint program, GLint location, GLfloat v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1i(GLuint program, GLint location, GLint v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1ui(GLuint program, GLint location, GLuint v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1d(GLuint program, GLint location, GLdouble v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble *value));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDrawArrays(GLenum mode, GLint first, GLsizei count));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount));
|
||||
|
||||
@@ -139,14 +139,6 @@ struct GLHookSet
|
||||
PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
|
||||
PFNGLLINKPROGRAMPROC glLinkProgram;
|
||||
PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
|
||||
PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
|
||||
PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
|
||||
PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
|
||||
PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
|
||||
PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
|
||||
PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
|
||||
PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
|
||||
PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
|
||||
PFNGLUSEPROGRAMPROC glUseProgram;
|
||||
PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
|
||||
PFNGLVALIDATEPROGRAMPROC glValidateProgram;
|
||||
@@ -257,16 +249,106 @@ struct GLHookSet
|
||||
PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
|
||||
PFNGLGETUNIFORMDVPROC glGetUniformdv;
|
||||
PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
|
||||
PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
|
||||
PFNGLUNIFORM1FPROC glUniform1f;
|
||||
PFNGLUNIFORM1IPROC glUniform1i;
|
||||
PFNGLUNIFORM1UIPROC glUniform1ui;
|
||||
PFNGLUNIFORM1FVPROC glUniform1fv;
|
||||
PFNGLUNIFORM1IVPROC glUniform1iv;
|
||||
PFNGLUNIFORM1FPROC glUniform1f;
|
||||
PFNGLUNIFORM1IPROC glUniform1i;
|
||||
PFNGLUNIFORM1UIPROC glUniform1ui;
|
||||
PFNGLUNIFORM1DPROC glUniform1d;
|
||||
PFNGLUNIFORM2FPROC glUniform2f;
|
||||
PFNGLUNIFORM2IPROC glUniform2i;
|
||||
PFNGLUNIFORM2UIPROC glUniform2ui;
|
||||
PFNGLUNIFORM2DPROC glUniform2d;
|
||||
PFNGLUNIFORM3FPROC glUniform3f;
|
||||
PFNGLUNIFORM3IPROC glUniform3i;
|
||||
PFNGLUNIFORM3UIPROC glUniform3ui;
|
||||
PFNGLUNIFORM3DPROC glUniform3d;
|
||||
PFNGLUNIFORM4FPROC glUniform4f;
|
||||
PFNGLUNIFORM4IPROC glUniform4i;
|
||||
PFNGLUNIFORM4UIPROC glUniform4ui;
|
||||
PFNGLUNIFORM4DPROC glUniform4d;
|
||||
PFNGLUNIFORM1FVPROC glUniform1fv;
|
||||
PFNGLUNIFORM1IVPROC glUniform1iv;
|
||||
PFNGLUNIFORM1UIVPROC glUniform1uiv;
|
||||
PFNGLUNIFORM2FVPROC glUniform2fv;
|
||||
PFNGLUNIFORM3FVPROC glUniform3fv;
|
||||
PFNGLUNIFORM4FVPROC glUniform4fv;
|
||||
PFNGLUNIFORM1DVPROC glUniform1dv;
|
||||
PFNGLUNIFORM2FVPROC glUniform2fv;
|
||||
PFNGLUNIFORM2IVPROC glUniform2iv;
|
||||
PFNGLUNIFORM2UIVPROC glUniform2uiv;
|
||||
PFNGLUNIFORM2DVPROC glUniform2dv;
|
||||
PFNGLUNIFORM3FVPROC glUniform3fv;
|
||||
PFNGLUNIFORM3IVPROC glUniform3iv;
|
||||
PFNGLUNIFORM3UIVPROC glUniform3uiv;
|
||||
PFNGLUNIFORM3DVPROC glUniform3dv;
|
||||
PFNGLUNIFORM4FVPROC glUniform4fv;
|
||||
PFNGLUNIFORM4IVPROC glUniform4iv;
|
||||
PFNGLUNIFORM4UIVPROC glUniform4uiv;
|
||||
PFNGLUNIFORM4DVPROC glUniform4dv;
|
||||
PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv;
|
||||
PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
|
||||
PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
|
||||
PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
|
||||
PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
|
||||
PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
|
||||
PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
|
||||
PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
|
||||
PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
|
||||
PFNGLUNIFORMMATRIX2DVPROC glUniformMatrix2dv;
|
||||
PFNGLUNIFORMMATRIX2X3DVPROC glUniformMatrix2x3dv;
|
||||
PFNGLUNIFORMMATRIX2X4DVPROC glUniformMatrix2x4dv;
|
||||
PFNGLUNIFORMMATRIX3DVPROC glUniformMatrix3dv;
|
||||
PFNGLUNIFORMMATRIX3X2DVPROC glUniformMatrix3x2dv;
|
||||
PFNGLUNIFORMMATRIX3X4DVPROC glUniformMatrix3x4dv;
|
||||
PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv;
|
||||
PFNGLUNIFORMMATRIX4X2DVPROC glUniformMatrix4x2dv;
|
||||
PFNGLUNIFORMMATRIX4X3DVPROC glUniformMatrix4x3dv;
|
||||
PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
|
||||
PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
|
||||
PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
|
||||
PFNGLPROGRAMUNIFORM1DPROC glProgramUniform1d;
|
||||
PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
|
||||
PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
|
||||
PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
|
||||
PFNGLPROGRAMUNIFORM2DPROC glProgramUniform2d;
|
||||
PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
|
||||
PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
|
||||
PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
|
||||
PFNGLPROGRAMUNIFORM3DPROC glProgramUniform3d;
|
||||
PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
|
||||
PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
|
||||
PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
|
||||
PFNGLPROGRAMUNIFORM4DPROC glProgramUniform4d;
|
||||
PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
|
||||
PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
|
||||
PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
|
||||
PFNGLPROGRAMUNIFORM1DVPROC glProgramUniform1dv;
|
||||
PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
|
||||
PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
|
||||
PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
|
||||
PFNGLPROGRAMUNIFORM2DVPROC glProgramUniform2dv;
|
||||
PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
|
||||
PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
|
||||
PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
|
||||
PFNGLPROGRAMUNIFORM3DVPROC glProgramUniform3dv;
|
||||
PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
|
||||
PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
|
||||
PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
|
||||
PFNGLPROGRAMUNIFORM4DVPROC glProgramUniform4dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX2DVPROC glProgramUniformMatrix2dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX3DVPROC glProgramUniformMatrix3dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv;
|
||||
PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv;
|
||||
PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
|
||||
PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
|
||||
PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
|
||||
|
||||
@@ -152,14 +152,6 @@
|
||||
HookExtension(PFNGLRELEASESHADERCOMPILERPROC, glReleaseShaderCompiler); \
|
||||
HookExtension(PFNGLLINKPROGRAMPROC, glLinkProgram); \
|
||||
HookExtension(PFNGLPROGRAMPARAMETERIPROC, glProgramParameteri); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX4FVPROC, glProgramUniformMatrix4fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1IPROC, glProgramUniform1i); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1FVPROC, glProgramUniform1fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1IVPROC, glProgramUniform1iv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1UIVPROC, glProgramUniform1uiv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2FVPROC, glProgramUniform2fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3FVPROC, glProgramUniform3fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4FVPROC, glProgramUniform4fv); \
|
||||
HookExtension(PFNGLUSEPROGRAMPROC, glUseProgram); \
|
||||
HookExtension(PFNGLUSEPROGRAMSTAGESPROC, glUseProgramStages); \
|
||||
HookExtension(PFNGLVALIDATEPROGRAMPROC, glValidateProgram); \
|
||||
@@ -271,16 +263,106 @@
|
||||
HookExtension(PFNGLGETUNIFORMUIVPROC, glGetUniformuiv); \
|
||||
HookExtension(PFNGLGETUNIFORMDVPROC, glGetUniformdv); \
|
||||
HookExtension(PFNGLUNIFORMBLOCKBINDINGPROC, glUniformBlockBinding); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv); \
|
||||
HookExtension(PFNGLUNIFORM1FPROC, glUniform1f); \
|
||||
HookExtension(PFNGLUNIFORM1IPROC, glUniform1i); \
|
||||
HookExtension(PFNGLUNIFORM1UIPROC, glUniform1ui); \
|
||||
HookExtension(PFNGLUNIFORM1FVPROC, glUniform1fv); \
|
||||
HookExtension(PFNGLUNIFORM1IVPROC, glUniform1iv); \
|
||||
HookExtension(PFNGLUNIFORM1FPROC, glUniform1f); \
|
||||
HookExtension(PFNGLUNIFORM1IPROC, glUniform1i); \
|
||||
HookExtension(PFNGLUNIFORM1UIPROC, glUniform1ui); \
|
||||
HookExtension(PFNGLUNIFORM1DPROC, glUniform1d); \
|
||||
HookExtension(PFNGLUNIFORM2FPROC, glUniform2f); \
|
||||
HookExtension(PFNGLUNIFORM2IPROC, glUniform2i); \
|
||||
HookExtension(PFNGLUNIFORM2UIPROC, glUniform2ui); \
|
||||
HookExtension(PFNGLUNIFORM2DPROC, glUniform2d); \
|
||||
HookExtension(PFNGLUNIFORM3FPROC, glUniform3f); \
|
||||
HookExtension(PFNGLUNIFORM3IPROC, glUniform3i); \
|
||||
HookExtension(PFNGLUNIFORM3UIPROC, glUniform3ui); \
|
||||
HookExtension(PFNGLUNIFORM3DPROC, glUniform3d); \
|
||||
HookExtension(PFNGLUNIFORM4FPROC, glUniform4f); \
|
||||
HookExtension(PFNGLUNIFORM4IPROC, glUniform4i); \
|
||||
HookExtension(PFNGLUNIFORM4UIPROC, glUniform4ui); \
|
||||
HookExtension(PFNGLUNIFORM4DPROC, glUniform4d); \
|
||||
HookExtension(PFNGLUNIFORM1FVPROC, glUniform1fv); \
|
||||
HookExtension(PFNGLUNIFORM1IVPROC, glUniform1iv); \
|
||||
HookExtension(PFNGLUNIFORM1UIVPROC, glUniform1uiv); \
|
||||
HookExtension(PFNGLUNIFORM2FVPROC, glUniform2fv); \
|
||||
HookExtension(PFNGLUNIFORM3FVPROC, glUniform3fv); \
|
||||
HookExtension(PFNGLUNIFORM4FVPROC, glUniform4fv); \
|
||||
HookExtension(PFNGLUNIFORM1DVPROC, glUniform1dv); \
|
||||
HookExtension(PFNGLUNIFORM2FVPROC, glUniform2fv); \
|
||||
HookExtension(PFNGLUNIFORM2IVPROC, glUniform2iv); \
|
||||
HookExtension(PFNGLUNIFORM2UIVPROC, glUniform2uiv); \
|
||||
HookExtension(PFNGLUNIFORM2DVPROC, glUniform2dv); \
|
||||
HookExtension(PFNGLUNIFORM3FVPROC, glUniform3fv); \
|
||||
HookExtension(PFNGLUNIFORM3IVPROC, glUniform3iv); \
|
||||
HookExtension(PFNGLUNIFORM3UIVPROC, glUniform3uiv); \
|
||||
HookExtension(PFNGLUNIFORM3DVPROC, glUniform3dv); \
|
||||
HookExtension(PFNGLUNIFORM4FVPROC, glUniform4fv); \
|
||||
HookExtension(PFNGLUNIFORM4IVPROC, glUniform4iv); \
|
||||
HookExtension(PFNGLUNIFORM4UIVPROC, glUniform4uiv); \
|
||||
HookExtension(PFNGLUNIFORM4DVPROC, glUniform4dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX2FVPROC, glUniformMatrix2fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX2X3FVPROC, glUniformMatrix2x3fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX2X4FVPROC, glUniformMatrix2x4fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX3FVPROC, glUniformMatrix3fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX3X2FVPROC, glUniformMatrix3x2fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX3X4FVPROC, glUniformMatrix3x4fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX4X2FVPROC, glUniformMatrix4x2fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX4X3FVPROC, glUniformMatrix4x3fv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX2DVPROC, glUniformMatrix2dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX2X3DVPROC, glUniformMatrix2x3dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX2X4DVPROC, glUniformMatrix2x4dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX3DVPROC, glUniformMatrix3dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX3X2DVPROC, glUniformMatrix3x2dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX3X4DVPROC, glUniformMatrix3x4dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX4DVPROC, glUniformMatrix4dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX4X2DVPROC, glUniformMatrix4x2dv); \
|
||||
HookExtension(PFNGLUNIFORMMATRIX4X3DVPROC, glUniformMatrix4x3dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1FPROC, glProgramUniform1f); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1IPROC, glProgramUniform1i); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1UIPROC, glProgramUniform1ui); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1DPROC, glProgramUniform1d); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2FPROC, glProgramUniform2f); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2IPROC, glProgramUniform2i); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2UIPROC, glProgramUniform2ui); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2DPROC, glProgramUniform2d); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3FPROC, glProgramUniform3f); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3IPROC, glProgramUniform3i); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3UIPROC, glProgramUniform3ui); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3DPROC, glProgramUniform3d); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4FPROC, glProgramUniform4f); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4IPROC, glProgramUniform4i); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4UIPROC, glProgramUniform4ui); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4DPROC, glProgramUniform4d); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1FVPROC, glProgramUniform1fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1IVPROC, glProgramUniform1iv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1UIVPROC, glProgramUniform1uiv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1DVPROC, glProgramUniform1dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2FVPROC, glProgramUniform2fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2IVPROC, glProgramUniform2iv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2UIVPROC, glProgramUniform2uiv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM2DVPROC, glProgramUniform2dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3FVPROC, glProgramUniform3fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3IVPROC, glProgramUniform3iv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3UIVPROC, glProgramUniform3uiv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM3DVPROC, glProgramUniform3dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4FVPROC, glProgramUniform4fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4IVPROC, glProgramUniform4iv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4UIVPROC, glProgramUniform4uiv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM4DVPROC, glProgramUniform4dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX2FVPROC, glProgramUniformMatrix2fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC, glProgramUniformMatrix2x3fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC, glProgramUniformMatrix2x4fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX3FVPROC, glProgramUniformMatrix3fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC, glProgramUniformMatrix3x2fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC, glProgramUniformMatrix3x4fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX4FVPROC, glProgramUniformMatrix4fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC, glProgramUniformMatrix4x2fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC, glProgramUniformMatrix4x3fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX2DVPROC, glProgramUniformMatrix2dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC, glProgramUniformMatrix2x3dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC, glProgramUniformMatrix2x4dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX3DVPROC, glProgramUniformMatrix3dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC, glProgramUniformMatrix3x2dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC, glProgramUniformMatrix3x4dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX4DVPROC, glProgramUniformMatrix4dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC, glProgramUniformMatrix4x2dv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC, glProgramUniformMatrix4x3dv); \
|
||||
HookExtension(PFNGLDRAWRANGEELEMENTSPROC, glDrawRangeElements); \
|
||||
HookExtension(PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC, glDrawArraysInstancedBaseInstance); \
|
||||
HookExtension(PFNGLDRAWARRAYSINSTANCEDPROC, glDrawArraysInstanced); \
|
||||
@@ -507,14 +589,6 @@
|
||||
HookWrapper0(void, glReleaseShaderCompiler); \
|
||||
HookWrapper1(void, glLinkProgram, GLuint, program); \
|
||||
HookWrapper3(void, glProgramParameteri, GLuint, program, GLenum, pname, GLint, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix4fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper3(void, glProgramUniform1i, GLuint, program, GLint, location, GLint, v0); \
|
||||
HookWrapper4(void, glProgramUniform1fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper4(void, glProgramUniform1iv, GLuint, program, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper4(void, glProgramUniform1uiv, GLuint, program, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper4(void, glProgramUniform2fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper4(void, glProgramUniform3fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper4(void, glProgramUniform4fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper1(void, glUseProgram, GLuint, program); \
|
||||
HookWrapper3(void, glUseProgramStages, GLuint, pipeline, GLbitfield, stages, GLuint, program); \
|
||||
HookWrapper1(void, glValidateProgram, GLuint, program); \
|
||||
@@ -625,16 +699,106 @@
|
||||
HookWrapper3(void, glGetUniformuiv, GLuint, program, GLint, location, GLuint *, params); \
|
||||
HookWrapper3(void, glGetUniformdv, GLuint, program, GLint, location, GLdouble *, params); \
|
||||
HookWrapper3(void, glUniformBlockBinding, GLuint, program, GLuint, uniformBlockIndex, GLuint, uniformBlockBinding); \
|
||||
HookWrapper4(void, glUniformMatrix4fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper2(void, glUniform1f, GLint, location, GLfloat, v0); \
|
||||
HookWrapper2(void, glUniform1i, GLint, location, GLint, v0); \
|
||||
HookWrapper2(void, glUniform1ui, GLint, location, GLuint, v0); \
|
||||
HookWrapper3(void, glUniform1fv, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper3(void, glUniform1iv, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper2(void, glUniform1f, GLint, location, GLfloat, v0); \
|
||||
HookWrapper2(void, glUniform1i, GLint, location, GLint, v0); \
|
||||
HookWrapper2(void, glUniform1ui, GLint, location, GLuint, v0); \
|
||||
HookWrapper2(void, glUniform1d, GLint, location, GLdouble, x); \
|
||||
HookWrapper3(void, glUniform2f, GLint, location, GLfloat, v0, GLfloat, v1); \
|
||||
HookWrapper3(void, glUniform2i, GLint, location, GLint, v0, GLint, v1); \
|
||||
HookWrapper3(void, glUniform2ui, GLint, location, GLuint, v0, GLuint, v1); \
|
||||
HookWrapper3(void, glUniform2d, GLint, location, GLdouble, x, GLdouble, y); \
|
||||
HookWrapper4(void, glUniform3f, GLint, location, GLfloat, v0, GLfloat, v1, GLfloat, v2); \
|
||||
HookWrapper4(void, glUniform3i, GLint, location, GLint, v0, GLint, v1, GLint, v2); \
|
||||
HookWrapper4(void, glUniform3ui, GLint, location, GLuint, v0, GLuint, v1, GLuint, v2); \
|
||||
HookWrapper4(void, glUniform3d, GLint, location, GLdouble, x, GLdouble, y, GLdouble, z); \
|
||||
HookWrapper5(void, glUniform4f, GLint, location, GLfloat, v0, GLfloat, v1, GLfloat, v2, GLfloat, v3); \
|
||||
HookWrapper5(void, glUniform4i, GLint, location, GLint, v0, GLint, v1, GLint, v2, GLint, v3); \
|
||||
HookWrapper5(void, glUniform4ui, GLint, location, GLuint, v0, GLuint, v1, GLuint, v2, GLuint, v3); \
|
||||
HookWrapper5(void, glUniform4d, GLint, location, GLdouble, x, GLdouble, y, GLdouble, z, GLdouble, w); \
|
||||
HookWrapper3(void, glUniform1fv, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper3(void, glUniform1iv, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper3(void, glUniform1uiv, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper3(void, glUniform2fv, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper3(void, glUniform3fv, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper3(void, glUniform4fv, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper3(void, glUniform1dv, GLint, location, GLsizei, count, const GLdouble *, value); \
|
||||
HookWrapper3(void, glUniform2fv, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper3(void, glUniform2iv, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper3(void, glUniform2uiv, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper3(void, glUniform2dv, GLint, location, GLsizei, count, const GLdouble *, value); \
|
||||
HookWrapper3(void, glUniform3fv, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper3(void, glUniform3iv, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper3(void, glUniform3uiv, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper3(void, glUniform3dv, GLint, location, GLsizei, count, const GLdouble *, value); \
|
||||
HookWrapper3(void, glUniform4fv, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper3(void, glUniform4iv, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper3(void, glUniform4uiv, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper3(void, glUniform4dv, GLint, location, GLsizei, count, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix2fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix2x3fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix2x4fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix3fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix3x2fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix3x4fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix4fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix4x2fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix4x3fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper4(void, glUniformMatrix2dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix2x3dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix2x4dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix3dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix3x2dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix3x4dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix4dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix4x2dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper4(void, glUniformMatrix4x3dv, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper3(void, glProgramUniform1f, GLuint, program, GLint, location, GLfloat, v0); \
|
||||
HookWrapper3(void, glProgramUniform1i, GLuint, program, GLint, location, GLint, v0); \
|
||||
HookWrapper3(void, glProgramUniform1ui, GLuint, program, GLint, location, GLuint, v0); \
|
||||
HookWrapper3(void, glProgramUniform1d, GLuint, program, GLint, location, GLdouble, v0); \
|
||||
HookWrapper4(void, glProgramUniform2f, GLuint, program, GLint, location, GLfloat, v0, GLfloat, v1); \
|
||||
HookWrapper4(void, glProgramUniform2i, GLuint, program, GLint, location, GLint, v0, GLint, v1); \
|
||||
HookWrapper4(void, glProgramUniform2ui, GLuint, program, GLint, location, GLuint, v0, GLuint, v1); \
|
||||
HookWrapper4(void, glProgramUniform2d, GLuint, program, GLint, location, GLdouble, v0, GLdouble, v1); \
|
||||
HookWrapper5(void, glProgramUniform3f, GLuint, program, GLint, location, GLfloat, v0, GLfloat, v1, GLfloat, v2); \
|
||||
HookWrapper5(void, glProgramUniform3i, GLuint, program, GLint, location, GLint, v0, GLint, v1, GLint, v2); \
|
||||
HookWrapper5(void, glProgramUniform3ui, GLuint, program, GLint, location, GLuint, v0, GLuint, v1, GLuint, v2); \
|
||||
HookWrapper5(void, glProgramUniform3d, GLuint, program, GLint, location, GLdouble, v0, GLdouble, v1, GLdouble, v2); \
|
||||
HookWrapper6(void, glProgramUniform4f, GLuint, program, GLint, location, GLfloat, v0, GLfloat, v1, GLfloat, v2, GLfloat, v3); \
|
||||
HookWrapper6(void, glProgramUniform4i, GLuint, program, GLint, location, GLint, v0, GLint, v1, GLint, v2, GLint, v3); \
|
||||
HookWrapper6(void, glProgramUniform4ui, GLuint, program, GLint, location, GLuint, v0, GLuint, v1, GLuint, v2, GLuint, v3); \
|
||||
HookWrapper6(void, glProgramUniform4d, GLuint, program, GLint, location, GLdouble, v0, GLdouble, v1, GLdouble, v2, GLdouble, v3); \
|
||||
HookWrapper4(void, glProgramUniform1fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper4(void, glProgramUniform1iv, GLuint, program, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper4(void, glProgramUniform1uiv, GLuint, program, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper4(void, glProgramUniform1dv, GLuint, program, GLint, location, GLsizei, count, const GLdouble *, value); \
|
||||
HookWrapper4(void, glProgramUniform2fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper4(void, glProgramUniform2iv, GLuint, program, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper4(void, glProgramUniform2uiv, GLuint, program, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper4(void, glProgramUniform2dv, GLuint, program, GLint, location, GLsizei, count, const GLdouble *, value); \
|
||||
HookWrapper4(void, glProgramUniform3fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper4(void, glProgramUniform3iv, GLuint, program, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper4(void, glProgramUniform3uiv, GLuint, program, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper4(void, glProgramUniform3dv, GLuint, program, GLint, location, GLsizei, count, const GLdouble *, value); \
|
||||
HookWrapper4(void, glProgramUniform4fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper4(void, glProgramUniform4iv, GLuint, program, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
HookWrapper4(void, glProgramUniform4uiv, GLuint, program, GLint, location, GLsizei, count, const GLuint *, value); \
|
||||
HookWrapper4(void, glProgramUniform4dv, GLuint, program, GLint, location, GLsizei, count, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix2fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix2x3fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix2x4fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix3fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix3x2fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix3x4fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix4fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix4x2fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix4x3fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix2dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix2x3dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix2x4dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix3dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix3x2dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix3x4dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix4dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix4x2dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix4x3dv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLdouble *, value); \
|
||||
HookWrapper6(void, glDrawRangeElements, GLenum, mode, GLuint, start, GLuint, end, GLsizei, count, GLenum, type, const void *, indices); \
|
||||
HookWrapper5(void, glDrawArraysInstancedBaseInstance, GLenum, mode, GLint, first, GLsizei, count, GLsizei, instancecount, GLuint, baseinstance); \
|
||||
HookWrapper4(void, glDrawArraysInstanced, GLenum, mode, GLint, first, GLsizei, count, GLsizei, instancecount); \
|
||||
|
||||
@@ -26,226 +26,6 @@
|
||||
#include "common/string_utils.h"
|
||||
#include "../gl_driver.h"
|
||||
|
||||
void WrappedOpenGL::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
|
||||
{
|
||||
m_Real.glUniformMatrix4fv(location, count, transpose, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_MATRIX);
|
||||
Serialise_glProgramUniformMatrix(m_Program, location, count, transpose, value, MAT4FV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1f(GLint location, GLfloat value)
|
||||
{
|
||||
m_Real.glUniform1f(location, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, 1, &value, VEC1FV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1i(GLint location, GLint value)
|
||||
{
|
||||
m_Real.glUniform1i(location, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, 1, &value, VEC1IV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1ui(GLint location, GLuint value)
|
||||
{
|
||||
m_Real.glUniform1ui(location, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, 1, &value, VEC1UIV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1fv(GLint location, GLsizei count, const GLfloat *value)
|
||||
{
|
||||
m_Real.glUniform1fv(location, count, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, value, VEC1FV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1iv(GLint location, GLsizei count, const GLint *value)
|
||||
{
|
||||
m_Real.glUniform1iv(location, count, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, value, VEC1IV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1uiv(GLint location, GLsizei count, const GLuint *value)
|
||||
{
|
||||
m_Real.glUniform1uiv(location, count, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, value, VEC1UIV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform2fv(GLint location, GLsizei count, const GLfloat *value)
|
||||
{
|
||||
m_Real.glUniform2fv(location, count, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, value, VEC2FV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform3fv(GLint location, GLsizei count, const GLfloat *value)
|
||||
{
|
||||
m_Real.glUniform3fv(location, count, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, value, VEC3FV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform4fv(GLint location, GLsizei count, const GLfloat *value)
|
||||
{
|
||||
m_Real.glUniform4fv(location, count, value);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = m_ContextRecord;
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
if(m_State == WRITING_IDLE)
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
|
||||
if(record)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, value, VEC4FV);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glProgramUniformVector(GLuint program, GLint location, GLsizei count, const void *value, UniformType type)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(ProgramRes(GetCtx(), program)));
|
||||
@@ -254,37 +34,69 @@ bool WrappedOpenGL::Serialise_glProgramUniformVector(GLuint program, GLint locat
|
||||
SERIALISE_ELEMENT(uint32_t, Count, count);
|
||||
|
||||
size_t elemsPerVec = 0;
|
||||
size_t elemSize = sizeof(float);
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case VEC1IV:
|
||||
case VEC1UIV:
|
||||
case VEC1FV: elemsPerVec = 1; break;
|
||||
case VEC2FV: elemsPerVec = 2; break;
|
||||
case VEC3FV: elemsPerVec = 3; break;
|
||||
case VEC4FV: elemsPerVec = 4; break;
|
||||
case VEC1iv:
|
||||
case VEC1uiv:
|
||||
case VEC1fv:
|
||||
case VEC1dv: elemsPerVec = 1; break;
|
||||
case VEC2iv:
|
||||
case VEC2uiv:
|
||||
case VEC2fv:
|
||||
case VEC2dv: elemsPerVec = 2; break;
|
||||
case VEC3iv:
|
||||
case VEC3uiv:
|
||||
case VEC3fv:
|
||||
case VEC3dv: elemsPerVec = 3; break;
|
||||
case VEC4iv:
|
||||
case VEC4uiv:
|
||||
case VEC4fv:
|
||||
case VEC4dv: elemsPerVec = 4; break;
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformVector: %d", Type);
|
||||
}
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case VEC1dv:
|
||||
case VEC2dv:
|
||||
case VEC3dv:
|
||||
case VEC4dv:
|
||||
elemSize = sizeof(double);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
m_pSerialiser->RawWriteBytes(value, sizeof(float)*elemsPerVec*Count);
|
||||
m_pSerialiser->RawWriteBytes(value, elemSize*elemsPerVec*Count);
|
||||
}
|
||||
else if(m_State <= EXECUTING)
|
||||
{
|
||||
value = m_pSerialiser->RawReadBytes(sizeof(float)*elemsPerVec*Count);
|
||||
value = m_pSerialiser->RawReadBytes(elemSize*elemsPerVec*Count);
|
||||
|
||||
GLuint live = GetResourceManager()->GetLiveResource(id).name;
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case VEC1IV: m_Real.glProgramUniform1iv(live, Loc, Count, (const GLint *)value); break;
|
||||
case VEC1UIV: m_Real.glProgramUniform1uiv(live, Loc, Count, (const GLuint *)value); break;
|
||||
case VEC1FV: m_Real.glProgramUniform1fv(live, Loc, Count, (const GLfloat *)value); break;
|
||||
case VEC2FV: m_Real.glProgramUniform2fv(live, Loc, Count, (const GLfloat *)value); break;
|
||||
case VEC3FV: m_Real.glProgramUniform3fv(live, Loc, Count, (const GLfloat *)value); break;
|
||||
case VEC4FV: m_Real.glProgramUniform4fv(live, Loc, Count, (const GLfloat *)value); break;
|
||||
case VEC1iv: m_Real.glProgramUniform1iv(live, Loc, Count, (const GLint *)value); break;
|
||||
case VEC1uiv: m_Real.glProgramUniform1uiv(live, Loc, Count, (const GLuint *)value); break;
|
||||
case VEC1fv: m_Real.glProgramUniform1fv(live, Loc, Count, (const GLfloat *)value); break;
|
||||
case VEC1dv: m_Real.glProgramUniform1dv(live, Loc, Count, (const GLdouble *)value); break;
|
||||
case VEC2iv: m_Real.glProgramUniform2iv(live, Loc, Count, (const GLint *)value); break;
|
||||
case VEC2uiv: m_Real.glProgramUniform2uiv(live, Loc, Count, (const GLuint *)value); break;
|
||||
case VEC2fv: m_Real.glProgramUniform2fv(live, Loc, Count, (const GLfloat *)value); break;
|
||||
case VEC2dv: m_Real.glProgramUniform2dv(live, Loc, Count, (const GLdouble *)value); break;
|
||||
case VEC3iv: m_Real.glProgramUniform3iv(live, Loc, Count, (const GLint *)value); break;
|
||||
case VEC3uiv: m_Real.glProgramUniform3uiv(live, Loc, Count, (const GLuint *)value); break;
|
||||
case VEC3fv: m_Real.glProgramUniform3fv(live, Loc, Count, (const GLfloat *)value); break;
|
||||
case VEC3dv: m_Real.glProgramUniform3dv(live, Loc, Count, (const GLdouble *)value); break;
|
||||
case VEC4iv: m_Real.glProgramUniform4iv(live, Loc, Count, (const GLint *)value); break;
|
||||
case VEC4uiv: m_Real.glProgramUniform4uiv(live, Loc, Count, (const GLuint *)value); break;
|
||||
case VEC4fv: m_Real.glProgramUniform4fv(live, Loc, Count, (const GLfloat *)value); break;
|
||||
case VEC4dv: m_Real.glProgramUniform4dv(live, Loc, Count, (const GLdouble *)value); break;
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformVector: %d", Type);
|
||||
}
|
||||
@@ -292,44 +104,38 @@ bool WrappedOpenGL::Serialise_glProgramUniformVector(GLuint program, GLint locat
|
||||
|
||||
if(m_pSerialiser->GetDebugText())
|
||||
{
|
||||
union
|
||||
{
|
||||
float *f;
|
||||
int32_t *i;
|
||||
uint32_t *u;
|
||||
double *d;
|
||||
} v;
|
||||
|
||||
v.f = (float *)value;
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case VEC1FV:
|
||||
{
|
||||
float *f = (float *)value;
|
||||
m_pSerialiser->DebugPrint("value: {%f}\n", f[0]);
|
||||
break;
|
||||
}
|
||||
case VEC1IV:
|
||||
{
|
||||
int32_t *i = (int32_t *)value;
|
||||
m_pSerialiser->DebugPrint("value: {%d}\n", i[0]);
|
||||
break;
|
||||
}
|
||||
case VEC1UIV:
|
||||
{
|
||||
uint32_t *u = (uint32_t *)value;
|
||||
m_pSerialiser->DebugPrint("value: {%u}\n", u[0]);
|
||||
break;
|
||||
}
|
||||
case VEC2FV:
|
||||
{
|
||||
float *f = (float *)value;
|
||||
m_pSerialiser->DebugPrint("value: {%f %f}\n", f[0], f[1]);
|
||||
break;
|
||||
}
|
||||
case VEC3FV:
|
||||
{
|
||||
float *f = (float *)value;
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f}\n", f[0], f[1], f[2]);
|
||||
break;
|
||||
}
|
||||
case VEC4FV:
|
||||
{
|
||||
float *f = (float *)value;
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[0], f[1], f[2], f[3]);
|
||||
break;
|
||||
}
|
||||
case VEC1fv: m_pSerialiser->DebugPrint("value: {%f}\n", v.f[0]); break;
|
||||
case VEC1iv: m_pSerialiser->DebugPrint("value: {%d}\n", v.i[0]); break;
|
||||
case VEC1uiv: m_pSerialiser->DebugPrint("value: {%u}\n", v.u[0]); break;
|
||||
case VEC1dv: m_pSerialiser->DebugPrint("value: {%f}\n", (float)v.d[0]); break;
|
||||
|
||||
case VEC2fv: m_pSerialiser->DebugPrint("value: {%f, %f}\n", v.f[0], v.f[1]); break;
|
||||
case VEC2iv: m_pSerialiser->DebugPrint("value: {%d, %d}\n", v.i[0], v.i[1]); break;
|
||||
case VEC2uiv: m_pSerialiser->DebugPrint("value: {%u, %u}\n", v.u[0], v.u[1]); break;
|
||||
case VEC2dv: m_pSerialiser->DebugPrint("value: {%f, %f}\n", (float)v.d[0], (float)v.d[1]); break;
|
||||
|
||||
case VEC3fv: m_pSerialiser->DebugPrint("value: {%f, %f, %f}\n", v.f[0], v.f[1], v.f[2]); break;
|
||||
case VEC3iv: m_pSerialiser->DebugPrint("value: {%d, %d, %d}\n", v.i[0], v.i[1], v.i[2]); break;
|
||||
case VEC3uiv: m_pSerialiser->DebugPrint("value: {%u, %u, %u}\n", v.u[0], v.u[1], v.u[2]); break;
|
||||
case VEC3dv: m_pSerialiser->DebugPrint("value: {%f, %f, %f}\n", (float)v.d[0], (float)v.d[1], (float)v.d[2]); break;
|
||||
|
||||
case VEC4fv: m_pSerialiser->DebugPrint("value: {%f, %f, %f, %f}\n", v.f[0], v.f[1], v.f[2], v.f[3]); break;
|
||||
case VEC4iv: m_pSerialiser->DebugPrint("value: {%d, %d, %d, %d}\n", v.i[0], v.i[1], v.i[2], v.i[3]); break;
|
||||
case VEC4uiv: m_pSerialiser->DebugPrint("value: {%u, %u, %u, %u}\n", v.u[0], v.u[1], v.u[2], v.u[3]); break;
|
||||
case VEC4dv: m_pSerialiser->DebugPrint("value: {%f, %f, %f, %f}\n", (float)v.d[0], (float)v.d[1], (float)v.d[2], (float)v.d[3]); break;
|
||||
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformVector: %d", Type);
|
||||
}
|
||||
@@ -338,167 +144,6 @@ bool WrappedOpenGL::Serialise_glProgramUniformVector(GLuint program, GLint locat
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniform1i(GLuint program, GLint location, GLint v0)
|
||||
{
|
||||
m_Real.glProgramUniform1i(program, location, v0);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(program, location, 1, &v0, VEC1IV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value)
|
||||
{
|
||||
m_Real.glProgramUniform1iv(program, location, count, value);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(program, location, count, value, VEC1IV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value)
|
||||
{
|
||||
m_Real.glProgramUniform1fv(program, location, count, value);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(program, location, count, value, VEC1FV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value)
|
||||
{
|
||||
m_Real.glProgramUniform1uiv(program, location, count, value);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(program, location, count, value, VEC1UIV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value)
|
||||
{
|
||||
m_Real.glProgramUniform2fv(program, location, count, value);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(program, location, count, value, VEC2FV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value)
|
||||
{
|
||||
m_Real.glProgramUniform3fv(program, location, count, value);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(program, location, count, value, VEC3FV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value)
|
||||
{
|
||||
m_Real.glProgramUniform4fv(program, location, count, value);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(program, location, count, value, VEC4FV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glProgramUniformMatrix(GLuint program, GLint location, GLsizei count, GLboolean transpose, const void *value, UniformType type)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(ProgramRes(GetCtx(), program)));
|
||||
@@ -508,27 +153,82 @@ bool WrappedOpenGL::Serialise_glProgramUniformMatrix(GLuint program, GLint locat
|
||||
SERIALISE_ELEMENT(uint8_t, Transpose, transpose);
|
||||
|
||||
size_t elemsPerMat = 0;
|
||||
size_t elemSize = sizeof(float);
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case MAT4FV: elemsPerMat = 16; break;
|
||||
case MAT2fv:
|
||||
case MAT2dv:
|
||||
elemsPerMat = 2*2; break;
|
||||
case MAT2x3fv:
|
||||
case MAT2x3dv:
|
||||
case MAT3x2fv:
|
||||
case MAT3x2dv:
|
||||
elemsPerMat = 2*3; break;
|
||||
case MAT2x4fv:
|
||||
case MAT4x2fv:
|
||||
elemsPerMat = 2*4; break;
|
||||
case MAT3fv:
|
||||
elemsPerMat = 3*3; break;
|
||||
case MAT3x4fv:
|
||||
case MAT4x3fv:
|
||||
elemsPerMat = 3*4; break;
|
||||
case MAT4fv:
|
||||
elemsPerMat = 4*4; break;
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformMatrix: %d", Type);
|
||||
}
|
||||
|
||||
bool isDouble = false;
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case MAT2dv:
|
||||
case MAT2x3dv:
|
||||
case MAT2x4dv:
|
||||
case MAT3dv:
|
||||
case MAT3x2dv:
|
||||
case MAT3x4dv:
|
||||
case MAT4dv:
|
||||
case MAT4x2dv:
|
||||
case MAT4x3dv:
|
||||
elemSize = sizeof(double);
|
||||
isDouble = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
m_pSerialiser->RawWriteBytes(value, sizeof(float)*elemsPerMat*Count);
|
||||
m_pSerialiser->RawWriteBytes(value, elemSize*elemsPerMat*Count);
|
||||
}
|
||||
else if(m_State <= EXECUTING)
|
||||
{
|
||||
value = m_pSerialiser->RawReadBytes(sizeof(float)*elemsPerMat*Count);
|
||||
value = m_pSerialiser->RawReadBytes(elemSize*elemsPerMat*Count);
|
||||
|
||||
GLuint live = GetResourceManager()->GetLiveResource(id).name;
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case MAT4FV: m_Real.glProgramUniformMatrix4fv(live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT2fv: m_Real.glProgramUniformMatrix2fv (live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT2x3fv: m_Real.glProgramUniformMatrix2x3fv(live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT2x4fv: m_Real.glProgramUniformMatrix2x4fv(live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT3fv: m_Real.glProgramUniformMatrix3fv (live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT3x2fv: m_Real.glProgramUniformMatrix3x2fv(live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT3x4fv: m_Real.glProgramUniformMatrix3x4fv(live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT4fv: m_Real.glProgramUniformMatrix4fv (live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT4x2fv: m_Real.glProgramUniformMatrix4x2fv(live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT4x3fv: m_Real.glProgramUniformMatrix4x3fv(live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
case MAT2dv: m_Real.glProgramUniformMatrix2dv (live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
case MAT2x3dv: m_Real.glProgramUniformMatrix2x3dv(live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
case MAT2x4dv: m_Real.glProgramUniformMatrix2x4dv(live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
case MAT3dv: m_Real.glProgramUniformMatrix3dv (live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
case MAT3x2dv: m_Real.glProgramUniformMatrix3x2dv(live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
case MAT3x4dv: m_Real.glProgramUniformMatrix3x4dv(live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
case MAT4dv: m_Real.glProgramUniformMatrix4dv (live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
case MAT4x2dv: m_Real.glProgramUniformMatrix4x2dv(live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
case MAT4x3dv: m_Real.glProgramUniformMatrix4x3dv(live, Loc, Count, Transpose, (const GLdouble *)value); break;
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformMatrix: %d", Type);
|
||||
}
|
||||
@@ -536,54 +236,286 @@ bool WrappedOpenGL::Serialise_glProgramUniformMatrix(GLuint program, GLint locat
|
||||
|
||||
if(m_pSerialiser->GetDebugText())
|
||||
{
|
||||
switch(Type)
|
||||
float *fv = (float *)value;
|
||||
double *dv = (double *)value;
|
||||
|
||||
m_pSerialiser->DebugPrint("value: {");
|
||||
for(size_t i=0; i < elemsPerMat; i++)
|
||||
{
|
||||
case MAT4FV:
|
||||
{
|
||||
float *f = (float *)value;
|
||||
if(Transpose)
|
||||
{
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[0], f[4], f[8], f[12]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[1], f[5], f[9], f[13]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[2], f[6], f[10], f[14]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[3], f[7], f[11], f[15]);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[0], f[1], f[2], f[3]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[4], f[5], f[6], f[7]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[8], f[9], f[10], f[11]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[12], f[13], f[14], f[15]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformMatrix: %d", Type);
|
||||
if(i == 0)
|
||||
m_pSerialiser->DebugPrint("%f", isDouble ? (float)dv[i] : fv[i]);
|
||||
else
|
||||
m_pSerialiser->DebugPrint(", %f", isDouble ? (float)dv[i] : fv[i]);
|
||||
}
|
||||
m_pSerialiser->DebugPrint("}\n");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
|
||||
{
|
||||
m_Real.glProgramUniformMatrix4fv(program, location, count, transpose, value);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_MATRIX);
|
||||
Serialise_glProgramUniformMatrix(program, location, count, transpose, value, MAT4FV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
#define UNIFORM_FUNC(count, suffix, paramtype, ...) \
|
||||
void WrappedOpenGL::CONCAT(CONCAT(FUNCNAME, count), suffix)(FUNCPARAMS, __VA_ARGS__) \
|
||||
{ \
|
||||
m_Real.CONCAT(CONCAT(FUNCNAME, count), suffix)(FUNCARGPASS, ARRAYLIST); \
|
||||
\
|
||||
if(m_State >= WRITING) \
|
||||
{ \
|
||||
GLResourceRecord *record = m_ContextRecord; \
|
||||
\
|
||||
/* TODO grab this at capture time as initial state for program resources */ \
|
||||
if(m_State == WRITING_IDLE) \
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), PROGRAM)); \
|
||||
\
|
||||
if(record) \
|
||||
{ \
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR); \
|
||||
const paramtype vals[] = { ARRAYLIST }; \
|
||||
Serialise_glProgramUniformVector(PROGRAM, location, 1, vals, CONCAT(CONCAT(VEC, count), CONCAT(suffix, v))); \
|
||||
\
|
||||
record->AddChunk(scope.Get()); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#define FUNCNAME glUniform
|
||||
#define FUNCPARAMS GLint location
|
||||
#define FUNCARGPASS location
|
||||
#define PROGRAM m_Program
|
||||
|
||||
#define ARRAYLIST v0
|
||||
|
||||
UNIFORM_FUNC(1, f, GLfloat, GLfloat v0)
|
||||
UNIFORM_FUNC(1, i, GLint, GLint v0)
|
||||
UNIFORM_FUNC(1, ui, GLuint, GLuint v0)
|
||||
UNIFORM_FUNC(1, d, GLdouble, GLdouble v0)
|
||||
|
||||
#undef ARRAYLIST
|
||||
#define ARRAYLIST v0, v1
|
||||
|
||||
UNIFORM_FUNC(2, f, GLfloat, GLfloat v0, GLfloat v1)
|
||||
UNIFORM_FUNC(2, i, GLint, GLint v0, GLint v1)
|
||||
UNIFORM_FUNC(2, ui, GLuint, GLuint v0, GLuint v1)
|
||||
UNIFORM_FUNC(2, d, GLdouble, GLdouble v0, GLdouble v1)
|
||||
|
||||
#undef ARRAYLIST
|
||||
#define ARRAYLIST v0, v1, v2
|
||||
|
||||
UNIFORM_FUNC(3, f, GLfloat, GLfloat v0, GLfloat v1, GLfloat v2)
|
||||
UNIFORM_FUNC(3, i, GLint, GLint v0, GLint v1, GLint v2)
|
||||
UNIFORM_FUNC(3, ui, GLuint, GLuint v0, GLuint v1, GLuint v2)
|
||||
UNIFORM_FUNC(3, d, GLdouble, GLdouble v0, GLdouble v1, GLdouble v2)
|
||||
|
||||
#undef ARRAYLIST
|
||||
#define ARRAYLIST v0, v1, v2, v3
|
||||
|
||||
UNIFORM_FUNC(4, f, GLfloat, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
|
||||
UNIFORM_FUNC(4, i, GLint, GLint v0, GLint v1, GLint v2, GLint v3)
|
||||
UNIFORM_FUNC(4, ui, GLuint, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
|
||||
UNIFORM_FUNC(4, d, GLdouble, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3)
|
||||
|
||||
#undef FUNCNAME
|
||||
#undef FUNCPARAMS
|
||||
#undef FUNCARGPASS
|
||||
#undef PROGRAM
|
||||
#define FUNCNAME glProgramUniform
|
||||
#define FUNCPARAMS GLuint program, GLint location
|
||||
#define FUNCARGPASS program, location
|
||||
#define PROGRAM program
|
||||
|
||||
#undef ARRAYLIST
|
||||
#define ARRAYLIST v0
|
||||
|
||||
UNIFORM_FUNC(1, f, GLfloat, GLfloat v0)
|
||||
UNIFORM_FUNC(1, i, GLint, GLint v0)
|
||||
UNIFORM_FUNC(1, ui, GLuint, GLuint v0)
|
||||
UNIFORM_FUNC(1, d, GLdouble, GLdouble v0)
|
||||
|
||||
#undef ARRAYLIST
|
||||
#define ARRAYLIST v0, v1
|
||||
|
||||
UNIFORM_FUNC(2, f, GLfloat, GLfloat v0, GLfloat v1)
|
||||
UNIFORM_FUNC(2, i, GLint, GLint v0, GLint v1)
|
||||
UNIFORM_FUNC(2, ui, GLuint, GLuint v0, GLuint v1)
|
||||
UNIFORM_FUNC(2, d, GLdouble, GLdouble v0, GLdouble v1)
|
||||
|
||||
#undef ARRAYLIST
|
||||
#define ARRAYLIST v0, v1, v2
|
||||
|
||||
UNIFORM_FUNC(3, f, GLfloat, GLfloat v0, GLfloat v1, GLfloat v2)
|
||||
UNIFORM_FUNC(3, i, GLint, GLint v0, GLint v1, GLint v2)
|
||||
UNIFORM_FUNC(3, ui, GLuint, GLuint v0, GLuint v1, GLuint v2)
|
||||
UNIFORM_FUNC(3, d, GLdouble, GLdouble v0, GLdouble v1, GLdouble v2)
|
||||
|
||||
#undef ARRAYLIST
|
||||
#define ARRAYLIST v0, v1, v2, v3
|
||||
|
||||
UNIFORM_FUNC(4, f, GLfloat, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
|
||||
UNIFORM_FUNC(4, i, GLint, GLint v0, GLint v1, GLint v2, GLint v3)
|
||||
UNIFORM_FUNC(4, ui, GLuint, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
|
||||
UNIFORM_FUNC(4, d, GLdouble, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3)
|
||||
|
||||
#undef ARRAYLIST
|
||||
|
||||
#undef UNIFORM_FUNC
|
||||
#define UNIFORM_FUNC(unicount, suffix, paramtype) \
|
||||
void WrappedOpenGL::CONCAT(CONCAT(FUNCNAME, unicount), CONCAT(suffix, v))(FUNCPARAMS, GLsizei count, const paramtype *value) \
|
||||
{ \
|
||||
m_Real.CONCAT(CONCAT(FUNCNAME, unicount), CONCAT(suffix, v))(FUNCARGPASS, count, value); \
|
||||
\
|
||||
if(m_State >= WRITING) \
|
||||
{ \
|
||||
GLResourceRecord *record = m_ContextRecord; \
|
||||
\
|
||||
/* TODO grab this at capture time as initial state for program resources */ \
|
||||
if(m_State == WRITING_IDLE) \
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), PROGRAM)); \
|
||||
\
|
||||
if(record) \
|
||||
{ \
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR); \
|
||||
Serialise_glProgramUniformVector(PROGRAM, location, count, value, CONCAT(CONCAT(VEC, unicount), CONCAT(suffix, v))); \
|
||||
\
|
||||
record->AddChunk(scope.Get()); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#undef FUNCNAME
|
||||
#undef FUNCPARAMS
|
||||
#undef FUNCARGPASS
|
||||
#undef PROGRAM
|
||||
#define FUNCNAME glUniform
|
||||
#define FUNCPARAMS GLint location
|
||||
#define FUNCARGPASS location
|
||||
#define PROGRAM m_Program
|
||||
|
||||
UNIFORM_FUNC(1, f, GLfloat)
|
||||
UNIFORM_FUNC(1, i, GLint)
|
||||
UNIFORM_FUNC(1, ui, GLuint)
|
||||
UNIFORM_FUNC(1, d, GLdouble)
|
||||
|
||||
UNIFORM_FUNC(2, f, GLfloat)
|
||||
UNIFORM_FUNC(2, i, GLint)
|
||||
UNIFORM_FUNC(2, ui, GLuint)
|
||||
UNIFORM_FUNC(2, d, GLdouble)
|
||||
|
||||
UNIFORM_FUNC(3, f, GLfloat)
|
||||
UNIFORM_FUNC(3, i, GLint)
|
||||
UNIFORM_FUNC(3, ui, GLuint)
|
||||
UNIFORM_FUNC(3, d, GLdouble)
|
||||
|
||||
UNIFORM_FUNC(4, f, GLfloat)
|
||||
UNIFORM_FUNC(4, i, GLint)
|
||||
UNIFORM_FUNC(4, ui, GLuint)
|
||||
UNIFORM_FUNC(4, d, GLdouble)
|
||||
|
||||
#undef FUNCNAME
|
||||
#undef FUNCPARAMS
|
||||
#undef FUNCARGPASS
|
||||
#undef PROGRAM
|
||||
#define FUNCNAME glProgramUniform
|
||||
#define FUNCPARAMS GLuint program, GLint location
|
||||
#define FUNCARGPASS program, location
|
||||
#define PROGRAM program
|
||||
|
||||
UNIFORM_FUNC(1, f, GLfloat)
|
||||
UNIFORM_FUNC(1, i, GLint)
|
||||
UNIFORM_FUNC(1, ui, GLuint)
|
||||
UNIFORM_FUNC(1, d, GLdouble)
|
||||
|
||||
UNIFORM_FUNC(2, f, GLfloat)
|
||||
UNIFORM_FUNC(2, i, GLint)
|
||||
UNIFORM_FUNC(2, ui, GLuint)
|
||||
UNIFORM_FUNC(2, d, GLdouble)
|
||||
|
||||
UNIFORM_FUNC(3, f, GLfloat)
|
||||
UNIFORM_FUNC(3, i, GLint)
|
||||
UNIFORM_FUNC(3, ui, GLuint)
|
||||
UNIFORM_FUNC(3, d, GLdouble)
|
||||
|
||||
UNIFORM_FUNC(4, f, GLfloat)
|
||||
UNIFORM_FUNC(4, i, GLint)
|
||||
UNIFORM_FUNC(4, ui, GLuint)
|
||||
UNIFORM_FUNC(4, d, GLdouble)
|
||||
|
||||
#undef UNIFORM_FUNC
|
||||
#define UNIFORM_FUNC(dim, suffix, paramtype) \
|
||||
void WrappedOpenGL::CONCAT(CONCAT(FUNCNAME, dim), suffix)(FUNCPARAMS, GLsizei count, GLboolean transpose, const paramtype *value) \
|
||||
{ \
|
||||
m_Real.CONCAT(CONCAT(FUNCNAME, dim), suffix)(FUNCARGPASS, count, transpose, value); \
|
||||
\
|
||||
if(m_State >= WRITING) \
|
||||
{ \
|
||||
GLResourceRecord *record = m_ContextRecord; \
|
||||
\
|
||||
/* TODO grab this at capture time as initial state for program resources */ \
|
||||
if(m_State == WRITING_IDLE) \
|
||||
record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), PROGRAM)); \
|
||||
\
|
||||
if(record) \
|
||||
{ \
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_MATRIX); \
|
||||
Serialise_glProgramUniformMatrix(PROGRAM, location, count, transpose, value, CONCAT(CONCAT(MAT, dim), suffix)); \
|
||||
\
|
||||
record->AddChunk(scope.Get()); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#undef FUNCNAME
|
||||
#undef FUNCPARAMS
|
||||
#undef FUNCARGPASS
|
||||
#undef PROGRAM
|
||||
#define FUNCNAME glUniformMatrix
|
||||
#define FUNCPARAMS GLint location
|
||||
#define FUNCARGPASS location
|
||||
#define PROGRAM m_Program
|
||||
|
||||
UNIFORM_FUNC(2, fv, GLfloat)
|
||||
UNIFORM_FUNC(2x3, fv, GLfloat)
|
||||
UNIFORM_FUNC(2x4, fv, GLfloat)
|
||||
UNIFORM_FUNC(3, fv, GLfloat)
|
||||
UNIFORM_FUNC(3x2, fv, GLfloat)
|
||||
UNIFORM_FUNC(3x4, fv, GLfloat)
|
||||
UNIFORM_FUNC(4, fv, GLfloat)
|
||||
UNIFORM_FUNC(4x2, fv, GLfloat)
|
||||
UNIFORM_FUNC(4x3, fv, GLfloat)
|
||||
|
||||
UNIFORM_FUNC(2, dv, GLdouble)
|
||||
UNIFORM_FUNC(2x3, dv, GLdouble)
|
||||
UNIFORM_FUNC(2x4, dv, GLdouble)
|
||||
UNIFORM_FUNC(3, dv, GLdouble)
|
||||
UNIFORM_FUNC(3x2, dv, GLdouble)
|
||||
UNIFORM_FUNC(3x4, dv, GLdouble)
|
||||
UNIFORM_FUNC(4, dv, GLdouble)
|
||||
UNIFORM_FUNC(4x2, dv, GLdouble)
|
||||
UNIFORM_FUNC(4x3, dv, GLdouble)
|
||||
|
||||
#undef FUNCNAME
|
||||
#undef FUNCPARAMS
|
||||
#undef FUNCARGPASS
|
||||
#undef PROGRAM
|
||||
#define FUNCNAME glProgramUniformMatrix
|
||||
#define FUNCPARAMS GLuint program, GLint location
|
||||
#define FUNCARGPASS program, location
|
||||
#define PROGRAM program
|
||||
|
||||
UNIFORM_FUNC(2, fv, GLfloat)
|
||||
UNIFORM_FUNC(2x3, fv, GLfloat)
|
||||
UNIFORM_FUNC(2x4, fv, GLfloat)
|
||||
UNIFORM_FUNC(3, fv, GLfloat)
|
||||
UNIFORM_FUNC(3x2, fv, GLfloat)
|
||||
UNIFORM_FUNC(3x4, fv, GLfloat)
|
||||
UNIFORM_FUNC(4, fv, GLfloat)
|
||||
UNIFORM_FUNC(4x2, fv, GLfloat)
|
||||
UNIFORM_FUNC(4x3, fv, GLfloat)
|
||||
|
||||
UNIFORM_FUNC(2, dv, GLdouble)
|
||||
UNIFORM_FUNC(2x3, dv, GLdouble)
|
||||
UNIFORM_FUNC(2x4, dv, GLdouble)
|
||||
UNIFORM_FUNC(3, dv, GLdouble)
|
||||
UNIFORM_FUNC(3x2, dv, GLdouble)
|
||||
UNIFORM_FUNC(3x4, dv, GLdouble)
|
||||
UNIFORM_FUNC(4, dv, GLdouble)
|
||||
UNIFORM_FUNC(4x2, dv, GLdouble)
|
||||
UNIFORM_FUNC(4x3, dv, GLdouble)
|
||||
|
||||
Reference in New Issue
Block a user