added glGetActiveAttrib
[platform/upstream/mesa.git] / progs / util / extfuncs.h
1 /**
2  * Utility for getting OpenGL extension function pointers
3  * Meant to be #included.
4  */
5
6 /* OpenGL 2.0 */
7 static PFNGLATTACHSHADERPROC glAttachShader_func = NULL;
8 static PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation_func = NULL;
9 static PFNGLCOMPILESHADERPROC glCompileShader_func = NULL;
10 static PFNGLCREATEPROGRAMPROC glCreateProgram_func = NULL;
11 static PFNGLCREATESHADERPROC glCreateShader_func = NULL;
12 static PFNGLDELETEPROGRAMPROC glDeleteProgram_func = NULL;
13 static PFNGLDELETESHADERPROC glDeleteShader_func = NULL;
14 static PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib_func = NULL;
15 static PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders_func = NULL;
16 static PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation_func = NULL;
17 static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog_func = NULL;
18 static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog_func = NULL;
19 static PFNGLGETSHADERIVPROC glGetShaderiv_func = NULL;
20 static PFNGLGETPROGRAMIVPROC glGetProgramiv_func = NULL;
21 static PFNGLGETSHADERSOURCEPROC glGetShaderSource_func = NULL;
22 static PFNGLGETUNIFORMFVPROC glGetUniformfv_func = NULL;
23 static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation_func = NULL;
24 static PFNGLISPROGRAMPROC glIsProgram_func = NULL;
25 static PFNGLISSHADERPROC glIsShader_func = NULL;
26 static PFNGLLINKPROGRAMPROC glLinkProgram_func = NULL;
27 static PFNGLSHADERSOURCEPROC glShaderSource_func = NULL;
28 static PFNGLUNIFORM1IPROC glUniform1i_func = NULL;
29 static PFNGLUNIFORM1FVPROC glUniform1fv_func = NULL;
30 static PFNGLUNIFORM2FVPROC glUniform2fv_func = NULL;
31 static PFNGLUNIFORM3FVPROC glUniform3fv_func = NULL;
32 static PFNGLUNIFORM4FVPROC glUniform4fv_func = NULL;
33 static PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv_func = NULL;
34 static PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv_func = NULL;
35 static PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv_func = NULL;
36 static PFNGLUSEPROGRAMPROC glUseProgram_func = NULL;
37 static PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f_func = NULL;
38 static PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f_func = NULL;
39 static PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_func = NULL;
40 static PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_func = NULL;
41
42 /* OpenGL 2.1 */
43 static PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv_func = NULL;
44 static PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv_func = NULL;
45 static PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv_func = NULL;
46 static PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv_func = NULL;
47 static PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv_func = NULL;
48 static PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv_func = NULL;
49
50 /* GL_ARB_vertex/fragment_program */
51 static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func = NULL;
52 static PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB_func = NULL;
53 static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func = NULL;
54 static PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB_func = NULL;
55 static PFNGLISPROGRAMARBPROC glIsProgramARB_func = NULL;
56 static PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB_func = NULL;
57 static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB_func = NULL;
58 static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func = NULL;
59 static PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB_func = NULL;
60
61 /* GL_APPLE_vertex_array_object */
62 static PFNGLBINDVERTEXARRAYAPPLEPROC glBindVertexArrayAPPLE_func = NULL;
63 static PFNGLDELETEVERTEXARRAYSAPPLEPROC glDeleteVertexArraysAPPLE_func = NULL;
64 static PFNGLGENVERTEXARRAYSAPPLEPROC glGenVertexArraysAPPLE_func = NULL;
65 static PFNGLISVERTEXARRAYAPPLEPROC glIsVertexArrayAPPLE_func = NULL;
66
67 /* GL_EXT_stencil_two_side */
68 static PFNGLACTIVESTENCILFACEEXTPROC glActiveStencilFaceEXT_func = NULL;
69
70
71 static void
72 GetExtensionFuncs(void)
73 {
74    /* OpenGL 2.0 */
75    glAttachShader_func = (PFNGLATTACHSHADERPROC) glutGetProcAddress("glAttachShader");
76    glBindAttribLocation_func = (PFNGLBINDATTRIBLOCATIONPROC) glutGetProcAddress("glBindAttribLocation");
77    glCompileShader_func = (PFNGLCOMPILESHADERPROC) glutGetProcAddress("glCompileShader");
78    glCreateProgram_func = (PFNGLCREATEPROGRAMPROC) glutGetProcAddress("glCreateProgram");
79    glCreateShader_func = (PFNGLCREATESHADERPROC) glutGetProcAddress("glCreateShader");
80    glDeleteProgram_func = (PFNGLDELETEPROGRAMPROC) glutGetProcAddress("glDeleteProgram");
81    glDeleteShader_func = (PFNGLDELETESHADERPROC) glutGetProcAddress("glDeleteShader");
82    glGetActiveAttrib_func = (PFNGLGETACTIVEATTRIBPROC) glutGetProcAddress("glGetActiveAttrib");
83    glGetAttachedShaders_func = (PFNGLGETATTACHEDSHADERSPROC) glutGetProcAddress("glGetAttachedShaders");
84    glGetAttribLocation_func = (PFNGLGETATTRIBLOCATIONPROC) glutGetProcAddress("glGetAttribLocation");
85    glGetProgramInfoLog_func = (PFNGLGETPROGRAMINFOLOGPROC) glutGetProcAddress("glGetProgramInfoLog");
86    glGetShaderInfoLog_func = (PFNGLGETSHADERINFOLOGPROC) glutGetProcAddress("glGetShaderInfoLog");
87    glGetProgramiv_func = (PFNGLGETPROGRAMIVPROC) glutGetProcAddress("glGetProgramiv");
88    glGetShaderiv_func = (PFNGLGETSHADERIVPROC) glutGetProcAddress("glGetShaderiv");
89    glGetShaderSource_func = (PFNGLGETSHADERSOURCEPROC) glutGetProcAddress("glGetShaderSource");
90    glGetUniformLocation_func = (PFNGLGETUNIFORMLOCATIONPROC) glutGetProcAddress("glGetUniformLocation");
91    glGetUniformfv_func = (PFNGLGETUNIFORMFVPROC) glutGetProcAddress("glGetUniformfv");
92    glIsProgram_func = (PFNGLISPROGRAMPROC) glutGetProcAddress("glIsProgram");
93    glIsShader_func = (PFNGLISSHADERPROC) glutGetProcAddress("glIsShader");
94    glLinkProgram_func = (PFNGLLINKPROGRAMPROC) glutGetProcAddress("glLinkProgram");
95    glShaderSource_func = (PFNGLSHADERSOURCEPROC) glutGetProcAddress("glShaderSource");
96    glUniform1i_func = (PFNGLUNIFORM1IPROC) glutGetProcAddress("glUniform1i");
97    glUniform1fv_func = (PFNGLUNIFORM1FVPROC) glutGetProcAddress("glUniform1fv");
98    glUniform2fv_func = (PFNGLUNIFORM2FVPROC) glutGetProcAddress("glUniform2fv");
99    glUniform3fv_func = (PFNGLUNIFORM3FVPROC) glutGetProcAddress("glUniform3fv");
100    glUniform4fv_func = (PFNGLUNIFORM3FVPROC) glutGetProcAddress("glUniform4fv");
101    glUniformMatrix2fv_func = (PFNGLUNIFORMMATRIX2FVPROC) glutGetProcAddress("glUniformMatrix2fv");
102    glUniformMatrix3fv_func = (PFNGLUNIFORMMATRIX3FVPROC) glutGetProcAddress("glUniformMatrix3fv");
103    glUniformMatrix4fv_func = (PFNGLUNIFORMMATRIX4FVPROC) glutGetProcAddress("glUniformMatrix4fv");
104    glUseProgram_func = (PFNGLUSEPROGRAMPROC) glutGetProcAddress("glUseProgram");
105    glVertexAttrib1f_func = (PFNGLVERTEXATTRIB1FPROC) glutGetProcAddress("glVertexAttrib1f");
106    glVertexAttrib2f_func = (PFNGLVERTEXATTRIB2FPROC) glutGetProcAddress("glVertexAttrib2f");
107    glVertexAttrib3f_func = (PFNGLVERTEXATTRIB3FPROC) glutGetProcAddress("glVertexAttrib3f");
108    glVertexAttrib4f_func = (PFNGLVERTEXATTRIB4FPROC) glutGetProcAddress("glVertexAttrib4f");
109
110    /* OpenGL 2.1 */
111    glUniformMatrix2x3fv_func = (PFNGLUNIFORMMATRIX2X3FVPROC) glutGetProcAddress("glUniformMatrix2x3fv");
112    glUniformMatrix3x2fv_func = (PFNGLUNIFORMMATRIX3X2FVPROC) glutGetProcAddress("glUniformMatrix3x2fv");
113    glUniformMatrix2x4fv_func = (PFNGLUNIFORMMATRIX2X4FVPROC) glutGetProcAddress("glUniformMatrix2x4fv");
114    glUniformMatrix4x2fv_func = (PFNGLUNIFORMMATRIX4X2FVPROC) glutGetProcAddress("glUniformMatrix4x2fv");
115    glUniformMatrix3x4fv_func = (PFNGLUNIFORMMATRIX3X4FVPROC) glutGetProcAddress("glUniformMatrix3x4fv");
116    glUniformMatrix4x3fv_func = (PFNGLUNIFORMMATRIX4X3FVPROC) glutGetProcAddress("glUniformMatrix4x3fv");
117
118    /* GL_ARB_vertex/fragment_program */
119    glBindProgramARB_func = (PFNGLBINDPROGRAMARBPROC) glutGetProcAddress("glBindProgramARB");
120    glDeleteProgramsARB_func = (PFNGLDELETEPROGRAMSARBPROC) glutGetProcAddress("glDeleteProgramsARB");
121    glGenProgramsARB_func = (PFNGLGENPROGRAMSARBPROC) glutGetProcAddress("glGenProgramsARB");
122    glGetProgramLocalParameterdvARB_func = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) glutGetProcAddress("glGetProgramLocalParameterdvARB");
123    glIsProgramARB_func = (PFNGLISPROGRAMARBPROC) glutGetProcAddress("glIsProgramARB");
124    glProgramLocalParameter4dARB_func = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) glutGetProcAddress("glProgramLocalParameter4dARB");
125    glProgramLocalParameter4fvARB_func = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) glutGetProcAddress("glProgramLocalParameter4fvARB");
126    glProgramStringARB_func = (PFNGLPROGRAMSTRINGARBPROC) glutGetProcAddress("glProgramStringARB");
127    glVertexAttrib1fARB_func = (PFNGLVERTEXATTRIB1FARBPROC) glutGetProcAddress("glVertexAttrib1fARB");
128
129    /* GL_APPLE_vertex_array_object */
130    glBindVertexArrayAPPLE_func = (PFNGLBINDVERTEXARRAYAPPLEPROC) glutGetProcAddress("glBindVertexArrayAPPLE");
131    glDeleteVertexArraysAPPLE_func = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) glutGetProcAddress("glDeleteVertexArraysAPPLE");
132    glGenVertexArraysAPPLE_func = (PFNGLGENVERTEXARRAYSAPPLEPROC) glutGetProcAddress("glGenVertexArraysAPPLE");
133    glIsVertexArrayAPPLE_func = (PFNGLISVERTEXARRAYAPPLEPROC) glutGetProcAddress("glIsVertexArrayAPPLE");
134
135    /* GL_EXT_stencil_two_side */
136    glActiveStencilFaceEXT_func = (PFNGLACTIVESTENCILFACEEXTPROC) glutGetProcAddress("glActiveStencilFaceEXT");
137 }
138