2 * Utility for getting OpenGL extension function pointers
3 * Meant to be #included.
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 PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders_func
= NULL
;
15 static PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation_func
= NULL
;
16 static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog_func
= NULL
;
17 static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog_func
= NULL
;
18 static PFNGLGETSHADERIVPROC glGetShaderiv_func
= NULL
;
19 static PFNGLGETPROGRAMIVPROC glGetProgramiv_func
= NULL
;
20 static PFNGLGETSHADERSOURCEPROC glGetShaderSource_func
= NULL
;
21 static PFNGLGETUNIFORMFVPROC glGetUniformfv_func
= NULL
;
22 static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation_func
= NULL
;
23 static PFNGLISPROGRAMPROC glIsProgram_func
= NULL
;
24 static PFNGLISSHADERPROC glIsShader_func
= NULL
;
25 static PFNGLLINKPROGRAMPROC glLinkProgram_func
= NULL
;
26 static PFNGLSHADERSOURCEPROC glShaderSource_func
= NULL
;
27 static PFNGLUNIFORM1IPROC glUniform1i_func
= NULL
;
28 static PFNGLUNIFORM1FVPROC glUniform1fv_func
= NULL
;
29 static PFNGLUNIFORM2FVPROC glUniform2fv_func
= NULL
;
30 static PFNGLUNIFORM3FVPROC glUniform3fv_func
= NULL
;
31 static PFNGLUNIFORM4FVPROC glUniform4fv_func
= NULL
;
32 static PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv_func
= NULL
;
33 static PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv_func
= NULL
;
34 static PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv_func
= NULL
;
35 static PFNGLUSEPROGRAMPROC glUseProgram_func
= NULL
;
36 static PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f_func
= NULL
;
37 static PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f_func
= NULL
;
38 static PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_func
= NULL
;
39 static PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_func
= NULL
;
42 /* GL_ARB_vertex/fragment_program */
43 static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func
= NULL
;
44 static PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB_func
= NULL
;
45 static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func
= NULL
;
46 static PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB_func
= NULL
;
47 static PFNGLISPROGRAMARBPROC glIsProgramARB_func
= NULL
;
48 static PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB_func
= NULL
;
49 static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB_func
= NULL
;
50 static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func
= NULL
;
51 static PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB_func
= NULL
;
53 /* GL_APPLE_vertex_array_object */
54 static PFNGLBINDVERTEXARRAYAPPLEPROC glBindVertexArrayAPPLE_func
= NULL
;
55 static PFNGLDELETEVERTEXARRAYSAPPLEPROC glDeleteVertexArraysAPPLE_func
= NULL
;
56 static PFNGLGENVERTEXARRAYSAPPLEPROC glGenVertexArraysAPPLE_func
= NULL
;
57 static PFNGLISVERTEXARRAYAPPLEPROC glIsVertexArrayAPPLE_func
= NULL
;
62 GetExtensionFuncs(void)
65 glAttachShader_func
= (PFNGLATTACHSHADERPROC
) glutGetProcAddress("glAttachShader");
66 glBindAttribLocation_func
= (PFNGLBINDATTRIBLOCATIONPROC
) glutGetProcAddress("glBindAttribLocation");
67 glCompileShader_func
= (PFNGLCOMPILESHADERPROC
) glutGetProcAddress("glCompileShader");
68 glCreateProgram_func
= (PFNGLCREATEPROGRAMPROC
) glutGetProcAddress("glCreateProgram");
69 glCreateShader_func
= (PFNGLCREATESHADERPROC
) glutGetProcAddress("glCreateShader");
70 glDeleteProgram_func
= (PFNGLDELETEPROGRAMPROC
) glutGetProcAddress("glDeleteProgram");
71 glDeleteShader_func
= (PFNGLDELETESHADERPROC
) glutGetProcAddress("glDeleteShader");
72 glGetAttachedShaders_func
= (PFNGLGETATTACHEDSHADERSPROC
) glutGetProcAddress("glGetAttachedShaders");
73 glGetAttribLocation_func
= (PFNGLGETATTRIBLOCATIONPROC
) glutGetProcAddress("glGetAttribLocation");
74 glGetProgramInfoLog_func
= (PFNGLGETPROGRAMINFOLOGPROC
) glutGetProcAddress("glGetProgramInfoLog");
75 glGetShaderInfoLog_func
= (PFNGLGETSHADERINFOLOGPROC
) glutGetProcAddress("glGetShaderInfoLog");
76 glGetProgramiv_func
= (PFNGLGETPROGRAMIVPROC
) glutGetProcAddress("glGetProgramiv");
77 glGetShaderiv_func
= (PFNGLGETSHADERIVPROC
) glutGetProcAddress("glGetShaderiv");
78 glGetShaderSource_func
= (PFNGLGETSHADERSOURCEPROC
) glutGetProcAddress("glGetShaderSource");
79 glGetUniformLocation_func
= (PFNGLGETUNIFORMLOCATIONPROC
) glutGetProcAddress("glGetUniformLocation");
80 glGetUniformfv_func
= (PFNGLGETUNIFORMFVPROC
) glutGetProcAddress("glGetUniformfv");
81 glIsProgram_func
= (PFNGLISPROGRAMPROC
) glutGetProcAddress("glIsProgram");
82 glIsShader_func
= (PFNGLISSHADERPROC
) glutGetProcAddress("glIsShader");
83 glLinkProgram_func
= (PFNGLLINKPROGRAMPROC
) glutGetProcAddress("glLinkProgram");
84 glShaderSource_func
= (PFNGLSHADERSOURCEPROC
) glutGetProcAddress("glShaderSource");
85 glUniform1i_func
= (PFNGLUNIFORM1IPROC
) glutGetProcAddress("glUniform1i");
86 glUniform1fv_func
= (PFNGLUNIFORM1FVPROC
) glutGetProcAddress("glUniform1fv");
87 glUniform2fv_func
= (PFNGLUNIFORM2FVPROC
) glutGetProcAddress("glUniform2fv");
88 glUniform3fv_func
= (PFNGLUNIFORM3FVPROC
) glutGetProcAddress("glUniform3fv");
89 glUniform4fv_func
= (PFNGLUNIFORM3FVPROC
) glutGetProcAddress("glUniform4fv");
90 glUniformMatrix2fv_func
= (PFNGLUNIFORMMATRIX2FVPROC
) glutGetProcAddress("glUniformMatrix2fv");
91 glUniformMatrix3fv_func
= (PFNGLUNIFORMMATRIX3FVPROC
) glutGetProcAddress("glUniformMatrix3fv");
92 glUniformMatrix4fv_func
= (PFNGLUNIFORMMATRIX4FVPROC
) glutGetProcAddress("glUniformMatrix4fv");
93 glUseProgram_func
= (PFNGLUSEPROGRAMPROC
) glutGetProcAddress("glUseProgram");
94 glVertexAttrib1f_func
= (PFNGLVERTEXATTRIB1FPROC
) glutGetProcAddress("glVertexAttrib1f");
95 glVertexAttrib2f_func
= (PFNGLVERTEXATTRIB2FPROC
) glutGetProcAddress("glVertexAttrib2f");
96 glVertexAttrib3f_func
= (PFNGLVERTEXATTRIB3FPROC
) glutGetProcAddress("glVertexAttrib3f");
97 glVertexAttrib4f_func
= (PFNGLVERTEXATTRIB4FPROC
) glutGetProcAddress("glVertexAttrib4f");
100 /* GL_ARB_vertex/fragment_program */
101 glBindProgramARB_func
= (PFNGLBINDPROGRAMARBPROC
) glutGetProcAddress("glBindProgramARB");
102 glDeleteProgramsARB_func
= (PFNGLDELETEPROGRAMSARBPROC
) glutGetProcAddress("glDeleteProgramsARB");
103 glGenProgramsARB_func
= (PFNGLGENPROGRAMSARBPROC
) glutGetProcAddress("glGenProgramsARB");
104 glGetProgramLocalParameterdvARB_func
= (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC
) glutGetProcAddress("glGetProgramLocalParameterdvARB");
105 glIsProgramARB_func
= (PFNGLISPROGRAMARBPROC
) glutGetProcAddress("glIsProgramARB");
106 glProgramLocalParameter4dARB_func
= (PFNGLPROGRAMLOCALPARAMETER4DARBPROC
) glutGetProcAddress("glProgramLocalParameter4dARB");
107 glProgramLocalParameter4fvARB_func
= (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC
) glutGetProcAddress("glProgramLocalParameter4fvARB");
108 glProgramStringARB_func
= (PFNGLPROGRAMSTRINGARBPROC
) glutGetProcAddress("glProgramStringARB");
109 glVertexAttrib1fARB_func
= (PFNGLVERTEXATTRIB1FARBPROC
) glutGetProcAddress("glVertexAttrib1fARB");
111 /* GL_APPLE_vertex_array_object */
112 glBindVertexArrayAPPLE_func
= (PFNGLBINDVERTEXARRAYAPPLEPROC
) glutGetProcAddress("glBindVertexArrayAPPLE");
113 glDeleteVertexArraysAPPLE_func
= (PFNGLDELETEVERTEXARRAYSAPPLEPROC
) glutGetProcAddress("glDeleteVertexArraysAPPLE");
114 glGenVertexArraysAPPLE_func
= (PFNGLGENVERTEXARRAYSAPPLEPROC
) glutGetProcAddress("glGenVertexArraysAPPLE");
115 glIsVertexArrayAPPLE_func
= (PFNGLISVERTEXARRAYAPPLEPROC
) glutGetProcAddress("glIsVertexArrayAPPLE");