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 PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib_func
= NULL
;
15 static PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform_func
= NULL
;
16 static PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders_func
= NULL
;
17 static PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation_func
= NULL
;
18 static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog_func
= NULL
;
19 static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog_func
= NULL
;
20 static PFNGLGETSHADERIVPROC glGetShaderiv_func
= NULL
;
21 static PFNGLGETPROGRAMIVPROC glGetProgramiv_func
= NULL
;
22 static PFNGLGETSHADERSOURCEPROC glGetShaderSource_func
= NULL
;
23 static PFNGLGETUNIFORMFVPROC glGetUniformfv_func
= NULL
;
24 static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation_func
= NULL
;
25 static PFNGLISPROGRAMPROC glIsProgram_func
= NULL
;
26 static PFNGLISSHADERPROC glIsShader_func
= NULL
;
27 static PFNGLLINKPROGRAMPROC glLinkProgram_func
= NULL
;
28 static PFNGLSHADERSOURCEPROC glShaderSource_func
= NULL
;
29 static PFNGLUNIFORM1IPROC glUniform1i_func
= NULL
;
30 static PFNGLUNIFORM2IPROC glUniform2i_func
= NULL
;
31 static PFNGLUNIFORM3IPROC glUniform3i_func
= NULL
;
32 static PFNGLUNIFORM4IPROC glUniform4i_func
= NULL
;
33 static PFNGLUNIFORM1FPROC glUniform1f_func
= NULL
;
34 static PFNGLUNIFORM2FPROC glUniform2f_func
= NULL
;
35 static PFNGLUNIFORM3FPROC glUniform3f_func
= NULL
;
36 static PFNGLUNIFORM4FPROC glUniform4f_func
= NULL
;
37 static PFNGLUNIFORM1FVPROC glUniform1fv_func
= NULL
;
38 static PFNGLUNIFORM2FVPROC glUniform2fv_func
= NULL
;
39 static PFNGLUNIFORM3FVPROC glUniform3fv_func
= NULL
;
40 static PFNGLUNIFORM4FVPROC glUniform4fv_func
= NULL
;
41 static PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv_func
= NULL
;
42 static PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv_func
= NULL
;
43 static PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv_func
= NULL
;
44 static PFNGLUSEPROGRAMPROC glUseProgram_func
= NULL
;
45 static PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f_func
= NULL
;
46 static PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f_func
= NULL
;
47 static PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_func
= NULL
;
48 static PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_func
= NULL
;
51 static PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv_func
= NULL
;
52 static PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv_func
= NULL
;
53 static PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv_func
= NULL
;
54 static PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv_func
= NULL
;
55 static PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv_func
= NULL
;
56 static PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv_func
= NULL
;
59 static PFNGLPOINTPARAMETERFVPROC glPointParameterfv_func
= NULL
;
60 static PFNGLSECONDARYCOLOR3FVPROC glSecondaryColor3fv_func
= NULL
;
62 /* GL_ARB_vertex/fragment_program */
63 static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func
= NULL
;
64 static PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB_func
= NULL
;
65 static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func
= NULL
;
66 static PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB_func
= NULL
;
67 static PFNGLISPROGRAMARBPROC glIsProgramARB_func
= NULL
;
68 static PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB_func
= NULL
;
69 static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB_func
= NULL
;
70 static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func
= NULL
;
71 static PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB_func
= NULL
;
73 /* GL_APPLE_vertex_array_object */
74 static PFNGLBINDVERTEXARRAYAPPLEPROC glBindVertexArrayAPPLE_func
= NULL
;
75 static PFNGLDELETEVERTEXARRAYSAPPLEPROC glDeleteVertexArraysAPPLE_func
= NULL
;
76 static PFNGLGENVERTEXARRAYSAPPLEPROC glGenVertexArraysAPPLE_func
= NULL
;
77 static PFNGLISVERTEXARRAYAPPLEPROC glIsVertexArrayAPPLE_func
= NULL
;
79 /* GL_EXT_stencil_two_side */
80 static PFNGLACTIVESTENCILFACEEXTPROC glActiveStencilFaceEXT_func
= NULL
;
84 GetExtensionFuncs(void)
87 glAttachShader_func
= (PFNGLATTACHSHADERPROC
) glutGetProcAddress("glAttachShader");
88 glBindAttribLocation_func
= (PFNGLBINDATTRIBLOCATIONPROC
) glutGetProcAddress("glBindAttribLocation");
89 glCompileShader_func
= (PFNGLCOMPILESHADERPROC
) glutGetProcAddress("glCompileShader");
90 glCreateProgram_func
= (PFNGLCREATEPROGRAMPROC
) glutGetProcAddress("glCreateProgram");
91 glCreateShader_func
= (PFNGLCREATESHADERPROC
) glutGetProcAddress("glCreateShader");
92 glDeleteProgram_func
= (PFNGLDELETEPROGRAMPROC
) glutGetProcAddress("glDeleteProgram");
93 glDeleteShader_func
= (PFNGLDELETESHADERPROC
) glutGetProcAddress("glDeleteShader");
94 glGetActiveAttrib_func
= (PFNGLGETACTIVEATTRIBPROC
) glutGetProcAddress("glGetActiveAttrib");
95 glGetActiveUniform_func
= (PFNGLGETACTIVEUNIFORMPROC
) glutGetProcAddress("glGetActiveUniform");
96 glGetAttachedShaders_func
= (PFNGLGETATTACHEDSHADERSPROC
) glutGetProcAddress("glGetAttachedShaders");
97 glGetAttribLocation_func
= (PFNGLGETATTRIBLOCATIONPROC
) glutGetProcAddress("glGetAttribLocation");
98 glGetProgramInfoLog_func
= (PFNGLGETPROGRAMINFOLOGPROC
) glutGetProcAddress("glGetProgramInfoLog");
99 glGetShaderInfoLog_func
= (PFNGLGETSHADERINFOLOGPROC
) glutGetProcAddress("glGetShaderInfoLog");
100 glGetProgramiv_func
= (PFNGLGETPROGRAMIVPROC
) glutGetProcAddress("glGetProgramiv");
101 glGetShaderiv_func
= (PFNGLGETSHADERIVPROC
) glutGetProcAddress("glGetShaderiv");
102 glGetShaderSource_func
= (PFNGLGETSHADERSOURCEPROC
) glutGetProcAddress("glGetShaderSource");
103 glGetUniformLocation_func
= (PFNGLGETUNIFORMLOCATIONPROC
) glutGetProcAddress("glGetUniformLocation");
104 glGetUniformfv_func
= (PFNGLGETUNIFORMFVPROC
) glutGetProcAddress("glGetUniformfv");
105 glIsProgram_func
= (PFNGLISPROGRAMPROC
) glutGetProcAddress("glIsProgram");
106 glIsShader_func
= (PFNGLISSHADERPROC
) glutGetProcAddress("glIsShader");
107 glLinkProgram_func
= (PFNGLLINKPROGRAMPROC
) glutGetProcAddress("glLinkProgram");
108 glShaderSource_func
= (PFNGLSHADERSOURCEPROC
) glutGetProcAddress("glShaderSource");
109 glUniform1i_func
= (PFNGLUNIFORM1IPROC
) glutGetProcAddress("glUniform1i");
110 glUniform2i_func
= (PFNGLUNIFORM2IPROC
) glutGetProcAddress("glUniform2i");
111 glUniform3i_func
= (PFNGLUNIFORM3IPROC
) glutGetProcAddress("glUniform3i");
112 glUniform4i_func
= (PFNGLUNIFORM4IPROC
) glutGetProcAddress("glUniform3i");
113 glUniform1f_func
= (PFNGLUNIFORM1FPROC
) glutGetProcAddress("glUniform1f");
114 glUniform2f_func
= (PFNGLUNIFORM2FPROC
) glutGetProcAddress("glUniform2f");
115 glUniform3f_func
= (PFNGLUNIFORM3FPROC
) glutGetProcAddress("glUniform3f");
116 glUniform4f_func
= (PFNGLUNIFORM4FPROC
) glutGetProcAddress("glUniform4f");
117 glUniform1fv_func
= (PFNGLUNIFORM1FVPROC
) glutGetProcAddress("glUniform1fv");
118 glUniform2fv_func
= (PFNGLUNIFORM2FVPROC
) glutGetProcAddress("glUniform2fv");
119 glUniform3fv_func
= (PFNGLUNIFORM3FVPROC
) glutGetProcAddress("glUniform3fv");
120 glUniform4fv_func
= (PFNGLUNIFORM3FVPROC
) glutGetProcAddress("glUniform4fv");
121 glUniformMatrix2fv_func
= (PFNGLUNIFORMMATRIX2FVPROC
) glutGetProcAddress("glUniformMatrix2fv");
122 glUniformMatrix3fv_func
= (PFNGLUNIFORMMATRIX3FVPROC
) glutGetProcAddress("glUniformMatrix3fv");
123 glUniformMatrix4fv_func
= (PFNGLUNIFORMMATRIX4FVPROC
) glutGetProcAddress("glUniformMatrix4fv");
124 glUseProgram_func
= (PFNGLUSEPROGRAMPROC
) glutGetProcAddress("glUseProgram");
125 glVertexAttrib1f_func
= (PFNGLVERTEXATTRIB1FPROC
) glutGetProcAddress("glVertexAttrib1f");
126 glVertexAttrib2f_func
= (PFNGLVERTEXATTRIB2FPROC
) glutGetProcAddress("glVertexAttrib2f");
127 glVertexAttrib3f_func
= (PFNGLVERTEXATTRIB3FPROC
) glutGetProcAddress("glVertexAttrib3f");
128 glVertexAttrib4f_func
= (PFNGLVERTEXATTRIB4FPROC
) glutGetProcAddress("glVertexAttrib4f");
131 glUniformMatrix2x3fv_func
= (PFNGLUNIFORMMATRIX2X3FVPROC
) glutGetProcAddress("glUniformMatrix2x3fv");
132 glUniformMatrix3x2fv_func
= (PFNGLUNIFORMMATRIX3X2FVPROC
) glutGetProcAddress("glUniformMatrix3x2fv");
133 glUniformMatrix2x4fv_func
= (PFNGLUNIFORMMATRIX2X4FVPROC
) glutGetProcAddress("glUniformMatrix2x4fv");
134 glUniformMatrix4x2fv_func
= (PFNGLUNIFORMMATRIX4X2FVPROC
) glutGetProcAddress("glUniformMatrix4x2fv");
135 glUniformMatrix3x4fv_func
= (PFNGLUNIFORMMATRIX3X4FVPROC
) glutGetProcAddress("glUniformMatrix3x4fv");
136 glUniformMatrix4x3fv_func
= (PFNGLUNIFORMMATRIX4X3FVPROC
) glutGetProcAddress("glUniformMatrix4x3fv");
139 glPointParameterfv_func
= (PFNGLPOINTPARAMETERFVPROC
) glutGetProcAddress("glPointParameterfv");
140 glSecondaryColor3fv_func
= (PFNGLSECONDARYCOLOR3FVPROC
) glutGetProcAddress("glSecondaryColor3fv");
142 /* GL_ARB_vertex/fragment_program */
143 glBindProgramARB_func
= (PFNGLBINDPROGRAMARBPROC
) glutGetProcAddress("glBindProgramARB");
144 glDeleteProgramsARB_func
= (PFNGLDELETEPROGRAMSARBPROC
) glutGetProcAddress("glDeleteProgramsARB");
145 glGenProgramsARB_func
= (PFNGLGENPROGRAMSARBPROC
) glutGetProcAddress("glGenProgramsARB");
146 glGetProgramLocalParameterdvARB_func
= (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC
) glutGetProcAddress("glGetProgramLocalParameterdvARB");
147 glIsProgramARB_func
= (PFNGLISPROGRAMARBPROC
) glutGetProcAddress("glIsProgramARB");
148 glProgramLocalParameter4dARB_func
= (PFNGLPROGRAMLOCALPARAMETER4DARBPROC
) glutGetProcAddress("glProgramLocalParameter4dARB");
149 glProgramLocalParameter4fvARB_func
= (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC
) glutGetProcAddress("glProgramLocalParameter4fvARB");
150 glProgramStringARB_func
= (PFNGLPROGRAMSTRINGARBPROC
) glutGetProcAddress("glProgramStringARB");
151 glVertexAttrib1fARB_func
= (PFNGLVERTEXATTRIB1FARBPROC
) glutGetProcAddress("glVertexAttrib1fARB");
153 /* GL_APPLE_vertex_array_object */
154 glBindVertexArrayAPPLE_func
= (PFNGLBINDVERTEXARRAYAPPLEPROC
) glutGetProcAddress("glBindVertexArrayAPPLE");
155 glDeleteVertexArraysAPPLE_func
= (PFNGLDELETEVERTEXARRAYSAPPLEPROC
) glutGetProcAddress("glDeleteVertexArraysAPPLE");
156 glGenVertexArraysAPPLE_func
= (PFNGLGENVERTEXARRAYSAPPLEPROC
) glutGetProcAddress("glGenVertexArraysAPPLE");
157 glIsVertexArrayAPPLE_func
= (PFNGLISVERTEXARRAYAPPLEPROC
) glutGetProcAddress("glIsVertexArrayAPPLE");
159 /* GL_EXT_stencil_two_side */
160 glActiveStencilFaceEXT_func
= (PFNGLACTIVESTENCILFACEEXTPROC
) glutGetProcAddress("glActiveStencilFaceEXT");