]> git.tdb.fi Git - libs/gl.git/blobdiff - source/arb_vertex_program.cpp
Rewrite VertexFormat to support an arbitary amount of components
[libs/gl.git] / source / arb_vertex_program.cpp
diff --git a/source/arb_vertex_program.cpp b/source/arb_vertex_program.cpp
new file mode 100644 (file)
index 0000000..c68da2b
--- /dev/null
@@ -0,0 +1,137 @@
+#include "extension.h"
+#include "arb_vertex_program.h"
+
+namespace Msp {
+namespace GL {
+
+PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB=0;
+PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB=0;
+PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB=0;
+PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB=0;
+PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB=0;
+PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB=0;
+PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB=0;
+PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB=0;
+PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB=0;
+PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB=0;
+PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB=0;
+PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB=0;
+PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB=0;
+PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB=0;
+PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB=0;
+PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB=0;
+PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB=0;
+PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB=0;
+PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4NbvARB=0;
+PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4NivARB=0;
+PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4NsvARB=0;
+PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4NubARB=0;
+PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4NubvARB=0;
+PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4NuivARB=0;
+PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4NusvARB=0;
+PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB=0;
+PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB=0;
+PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB=0;
+PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB=0;
+PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB=0;
+PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB=0;
+PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB=0;
+PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB=0;
+PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB=0;
+PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB=0;
+PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB=0;
+PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB=0;
+PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB=0;
+PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB=0;
+PFNGLPROGRAMSTRINGARBPROC glProgramStringARB=0;
+PFNGLBINDPROGRAMARBPROC glBindProgramARB=0;
+PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB=0;
+PFNGLGENPROGRAMSARBPROC glGenProgramsARB=0;
+PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB=0;
+PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB=0;
+PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB=0;
+PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB=0;
+PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB=0;
+PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB=0;
+PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB=0;
+PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB=0;
+PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB=0;
+PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB=0;
+PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB=0;
+PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB=0;
+PFNGLGETPROGRAMIVARBPROC glGetProgramivARB=0;
+PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB=0;
+PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB=0;
+PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB=0;
+PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB=0;
+PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB=0;
+PFNGLISPROGRAMARBPROC glIsProgramARB=0;
+
+void init_arb_vertex_program()
+{
+       glVertexAttrib1dARB=reinterpret_cast<PFNGLVERTEXATTRIB1DARBPROC>(get_proc_address("glVertexAttrib1dARB"));
+       glVertexAttrib1dvARB=reinterpret_cast<PFNGLVERTEXATTRIB1DVARBPROC>(get_proc_address("glVertexAttrib1dvARB"));
+       glVertexAttrib1fARB=reinterpret_cast<PFNGLVERTEXATTRIB1FARBPROC>(get_proc_address("glVertexAttrib1fARB"));
+       glVertexAttrib1fvARB=reinterpret_cast<PFNGLVERTEXATTRIB1FVARBPROC>(get_proc_address("glVertexAttrib1fvARB"));
+       glVertexAttrib1sARB=reinterpret_cast<PFNGLVERTEXATTRIB1SARBPROC>(get_proc_address("glVertexAttrib1sARB"));
+       glVertexAttrib1svARB=reinterpret_cast<PFNGLVERTEXATTRIB1SVARBPROC>(get_proc_address("glVertexAttrib1svARB"));
+       glVertexAttrib2dARB=reinterpret_cast<PFNGLVERTEXATTRIB2DARBPROC>(get_proc_address("glVertexAttrib2dARB"));
+       glVertexAttrib2dvARB=reinterpret_cast<PFNGLVERTEXATTRIB2DVARBPROC>(get_proc_address("glVertexAttrib2dvARB"));
+       glVertexAttrib2fARB=reinterpret_cast<PFNGLVERTEXATTRIB2FARBPROC>(get_proc_address("glVertexAttrib2fARB"));
+       glVertexAttrib2fvARB=reinterpret_cast<PFNGLVERTEXATTRIB2FVARBPROC>(get_proc_address("glVertexAttrib2fvARB"));
+       glVertexAttrib2sARB=reinterpret_cast<PFNGLVERTEXATTRIB2SARBPROC>(get_proc_address("glVertexAttrib2sARB"));
+       glVertexAttrib2svARB=reinterpret_cast<PFNGLVERTEXATTRIB2SVARBPROC>(get_proc_address("glVertexAttrib2svARB"));
+       glVertexAttrib3dARB=reinterpret_cast<PFNGLVERTEXATTRIB3DARBPROC>(get_proc_address("glVertexAttrib3dARB"));
+       glVertexAttrib3dvARB=reinterpret_cast<PFNGLVERTEXATTRIB3DVARBPROC>(get_proc_address("glVertexAttrib3dvARB"));
+       glVertexAttrib3fARB=reinterpret_cast<PFNGLVERTEXATTRIB3FARBPROC>(get_proc_address("glVertexAttrib3fARB"));
+       glVertexAttrib3fvARB=reinterpret_cast<PFNGLVERTEXATTRIB3FVARBPROC>(get_proc_address("glVertexAttrib3fvARB"));
+       glVertexAttrib3sARB=reinterpret_cast<PFNGLVERTEXATTRIB3SARBPROC>(get_proc_address("glVertexAttrib3sARB"));
+       glVertexAttrib3svARB=reinterpret_cast<PFNGLVERTEXATTRIB3SVARBPROC>(get_proc_address("glVertexAttrib3svARB"));
+       glVertexAttrib4NbvARB=reinterpret_cast<PFNGLVERTEXATTRIB4NBVARBPROC>(get_proc_address("glVertexAttrib4NbvARB"));
+       glVertexAttrib4NivARB=reinterpret_cast<PFNGLVERTEXATTRIB4NIVARBPROC>(get_proc_address("glVertexAttrib4NivARB"));
+       glVertexAttrib4NsvARB=reinterpret_cast<PFNGLVERTEXATTRIB4NSVARBPROC>(get_proc_address("glVertexAttrib4NsvARB"));
+       glVertexAttrib4NubARB=reinterpret_cast<PFNGLVERTEXATTRIB4NUBARBPROC>(get_proc_address("glVertexAttrib4NubARB"));
+       glVertexAttrib4NubvARB=reinterpret_cast<PFNGLVERTEXATTRIB4NUBVARBPROC>(get_proc_address("glVertexAttrib4NubvARB"));
+       glVertexAttrib4NuivARB=reinterpret_cast<PFNGLVERTEXATTRIB4NUIVARBPROC>(get_proc_address("glVertexAttrib4NuivARB"));
+       glVertexAttrib4NusvARB=reinterpret_cast<PFNGLVERTEXATTRIB4NUSVARBPROC>(get_proc_address("glVertexAttrib4NusvARB"));
+       glVertexAttrib4bvARB=reinterpret_cast<PFNGLVERTEXATTRIB4BVARBPROC>(get_proc_address("glVertexAttrib4bvARB"));
+       glVertexAttrib4dARB=reinterpret_cast<PFNGLVERTEXATTRIB4DARBPROC>(get_proc_address("glVertexAttrib4dARB"));
+       glVertexAttrib4dvARB=reinterpret_cast<PFNGLVERTEXATTRIB4DVARBPROC>(get_proc_address("glVertexAttrib4dvARB"));
+       glVertexAttrib4fARB=reinterpret_cast<PFNGLVERTEXATTRIB4FARBPROC>(get_proc_address("glVertexAttrib4fARB"));
+       glVertexAttrib4fvARB=reinterpret_cast<PFNGLVERTEXATTRIB4FVARBPROC>(get_proc_address("glVertexAttrib4fvARB"));
+       glVertexAttrib4ivARB=reinterpret_cast<PFNGLVERTEXATTRIB4IVARBPROC>(get_proc_address("glVertexAttrib4ivARB"));
+       glVertexAttrib4sARB=reinterpret_cast<PFNGLVERTEXATTRIB4SARBPROC>(get_proc_address("glVertexAttrib4sARB"));
+       glVertexAttrib4svARB=reinterpret_cast<PFNGLVERTEXATTRIB4SVARBPROC>(get_proc_address("glVertexAttrib4svARB"));
+       glVertexAttrib4ubvARB=reinterpret_cast<PFNGLVERTEXATTRIB4UBVARBPROC>(get_proc_address("glVertexAttrib4ubvARB"));
+       glVertexAttrib4uivARB=reinterpret_cast<PFNGLVERTEXATTRIB4UIVARBPROC>(get_proc_address("glVertexAttrib4uivARB"));
+       glVertexAttrib4usvARB=reinterpret_cast<PFNGLVERTEXATTRIB4USVARBPROC>(get_proc_address("glVertexAttrib4usvARB"));
+       glVertexAttribPointerARB=reinterpret_cast<PFNGLVERTEXATTRIBPOINTERARBPROC>(get_proc_address("glVertexAttribPointerARB"));
+       glEnableVertexAttribArrayARB=reinterpret_cast<PFNGLENABLEVERTEXATTRIBARRAYARBPROC>(get_proc_address("glEnableVertexAttribArrayARB"));
+       glDisableVertexAttribArrayARB=reinterpret_cast<PFNGLDISABLEVERTEXATTRIBARRAYARBPROC>(get_proc_address("glDisableVertexAttribArrayARB"));
+       glProgramStringARB=reinterpret_cast<PFNGLPROGRAMSTRINGARBPROC>(get_proc_address("glProgramStringARB"));
+       glBindProgramARB=reinterpret_cast<PFNGLBINDPROGRAMARBPROC>(get_proc_address("glBindProgramARB"));
+       glDeleteProgramsARB=reinterpret_cast<PFNGLDELETEPROGRAMSARBPROC>(get_proc_address("glDeleteProgramsARB"));
+       glGenProgramsARB=reinterpret_cast<PFNGLGENPROGRAMSARBPROC>(get_proc_address("glGenProgramsARB"));
+       glProgramEnvParameter4dARB=reinterpret_cast<PFNGLPROGRAMENVPARAMETER4DARBPROC>(get_proc_address("glProgramEnvParameter4dARB"));
+       glProgramEnvParameter4dvARB=reinterpret_cast<PFNGLPROGRAMENVPARAMETER4DVARBPROC>(get_proc_address("glProgramEnvParameter4dvARB"));
+       glProgramEnvParameter4fARB=reinterpret_cast<PFNGLPROGRAMENVPARAMETER4FARBPROC>(get_proc_address("glProgramEnvParameter4fARB"));
+       glProgramEnvParameter4fvARB=reinterpret_cast<PFNGLPROGRAMENVPARAMETER4FVARBPROC>(get_proc_address("glProgramEnvParameter4fvARB"));
+       glProgramLocalParameter4dARB=reinterpret_cast<PFNGLPROGRAMLOCALPARAMETER4DARBPROC>(get_proc_address("glProgramLocalParameter4dARB"));
+       glProgramLocalParameter4dvARB=reinterpret_cast<PFNGLPROGRAMLOCALPARAMETER4DVARBPROC>(get_proc_address("glProgramLocalParameter4dvARB"));
+       glProgramLocalParameter4fARB=reinterpret_cast<PFNGLPROGRAMLOCALPARAMETER4FARBPROC>(get_proc_address("glProgramLocalParameter4fARB"));
+       glProgramLocalParameter4fvARB=reinterpret_cast<PFNGLPROGRAMLOCALPARAMETER4FVARBPROC>(get_proc_address("glProgramLocalParameter4fvARB"));
+       glGetProgramEnvParameterdvARB=reinterpret_cast<PFNGLGETPROGRAMENVPARAMETERDVARBPROC>(get_proc_address("glGetProgramEnvParameterdvARB"));
+       glGetProgramEnvParameterfvARB=reinterpret_cast<PFNGLGETPROGRAMENVPARAMETERFVARBPROC>(get_proc_address("glGetProgramEnvParameterfvARB"));
+       glGetProgramLocalParameterdvARB=reinterpret_cast<PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC>(get_proc_address("glGetProgramLocalParameterdvARB"));
+       glGetProgramLocalParameterfvARB=reinterpret_cast<PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC>(get_proc_address("glGetProgramLocalParameterfvARB"));
+       glGetProgramivARB=reinterpret_cast<PFNGLGETPROGRAMIVARBPROC>(get_proc_address("glGetProgramivARB"));
+       glGetProgramStringARB=reinterpret_cast<PFNGLGETPROGRAMSTRINGARBPROC>(get_proc_address("glGetProgramStringARB"));
+       glGetVertexAttribdvARB=reinterpret_cast<PFNGLGETVERTEXATTRIBDVARBPROC>(get_proc_address("glGetVertexAttribdvARB"));
+       glGetVertexAttribfvARB=reinterpret_cast<PFNGLGETVERTEXATTRIBFVARBPROC>(get_proc_address("glGetVertexAttribfvARB"));
+       glGetVertexAttribivARB=reinterpret_cast<PFNGLGETVERTEXATTRIBIVARBPROC>(get_proc_address("glGetVertexAttribivARB"));
+       glGetVertexAttribPointervARB=reinterpret_cast<PFNGLGETVERTEXATTRIBPOINTERVARBPROC>(get_proc_address("glGetVertexAttribPointervARB"));
+       glIsProgramARB=reinterpret_cast<PFNGLISPROGRAMARBPROC>(get_proc_address("glIsProgramARB"));
+}
+
+} // namespace GL
+} // namespace Msp