blob: cf6d8f8e1107a6ab9e439d389f1863f76efa4977 [file] [log] [blame]
Briane55b7712006-12-15 09:30:31 -07001/**
2 * Utility for getting OpenGL extension function pointers
3 * Meant to be #included.
4 */
5
6/* OpenGL 2.0 */
7static PFNGLATTACHSHADERPROC glAttachShader_func = NULL;
8static PFNGLCOMPILESHADERPROC glCompileShader_func = NULL;
9static PFNGLCREATEPROGRAMPROC glCreateProgram_func = NULL;
10static PFNGLCREATESHADERPROC glCreateShader_func = NULL;
11static PFNGLDELETEPROGRAMPROC glDeleteProgram_func = NULL;
12static PFNGLDELETESHADERPROC glDeleteShader_func = NULL;
13static PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders_func = NULL;
14static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog_func = NULL;
15static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog_func = NULL;
16static PFNGLGETSHADERIVPROC glGetShaderiv_func = NULL;
17static PFNGLGETPROGRAMIVPROC glGetProgramiv_func = NULL;
18static PFNGLGETSHADERSOURCEPROC glGetShaderSource_func = NULL;
19static PFNGLGETUNIFORMFVPROC glGetUniformfv_func = NULL;
20static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation_func = NULL;
21static PFNGLISPROGRAMPROC glIsProgram_func = NULL;
22static PFNGLISSHADERPROC glIsShader_func = NULL;
23static PFNGLLINKPROGRAMPROC glLinkProgram_func = NULL;
24static PFNGLSHADERSOURCEPROC glShaderSource_func = NULL;
25static PFNGLUNIFORM3FVPROC glUniform3fv_func = NULL;
26static PFNGLUNIFORM3FVPROC glUniform4fv_func = NULL;
27static PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv_func = NULL;
28static PFNGLUSEPROGRAMPROC glUseProgram_func = NULL;
29
30/* GL_ARB_vertex/fragment_program */
31static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func = NULL;
32static PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB_func = NULL;
33static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func = NULL;
34static PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB_func = NULL;
35static PFNGLISPROGRAMARBPROC glIsProgramARB_func = NULL;
36static PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB_func = NULL;
37static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB_func = NULL;
38static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func = NULL;
39static PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB_func = NULL;
40
41/* GL_APPLE_vertex_array_object */
42static PFNGLBINDVERTEXARRAYAPPLEPROC glBindVertexArrayAPPLE_func = NULL;
43static PFNGLDELETEVERTEXARRAYSAPPLEPROC glDeleteVertexArraysAPPLE_func = NULL;
44static PFNGLGENVERTEXARRAYSAPPLEPROC glGenVertexArraysAPPLE_func = NULL;
45static PFNGLISVERTEXARRAYAPPLEPROC glIsVertexArrayAPPLE_func = NULL;
46
47
48
49static void
50GetExtensionFuncs(void)
51{
52 /* OpenGL 2.0 */
53 glAttachShader_func = (PFNGLATTACHSHADERPROC) glutGetProcAddress("glAttachShader");
54 glCompileShader_func = (PFNGLCOMPILESHADERPROC) glutGetProcAddress("glCompileShader");
55 glCreateProgram_func = (PFNGLCREATEPROGRAMPROC) glutGetProcAddress("glCreateProgram");
56 glCreateShader_func = (PFNGLCREATESHADERPROC) glutGetProcAddress("glCreateShader");
57 glDeleteProgram_func = (PFNGLDELETEPROGRAMPROC) glutGetProcAddress("glDeleteProgram");
58 glDeleteShader_func = (PFNGLDELETESHADERPROC) glutGetProcAddress("glDeleteShader");
59 glGetAttachedShaders_func = (PFNGLGETATTACHEDSHADERSPROC) glutGetProcAddress("glGetAttachedShaders");
60 glGetProgramInfoLog_func = (PFNGLGETPROGRAMINFOLOGPROC) glutGetProcAddress("glGetProgramInfoLog");
61 glGetShaderInfoLog_func = (PFNGLGETSHADERINFOLOGPROC) glutGetProcAddress("glGetShaderInfoLog");
62 glGetProgramiv_func = (PFNGLGETPROGRAMIVPROC) glutGetProcAddress("glGetProgramiv");
63 glGetShaderiv_func = (PFNGLGETSHADERIVPROC) glutGetProcAddress("glGetShaderiv");
64 glGetShaderSource_func = (PFNGLGETSHADERSOURCEPROC) glutGetProcAddress("glGetShaderSource");
65 glGetUniformLocation_func = (PFNGLGETUNIFORMLOCATIONPROC) glutGetProcAddress("glGetUniformLocation");
66 glGetUniformfv_func = (PFNGLGETUNIFORMFVPROC) glutGetProcAddress("glGetUniformfv");
67 glIsProgram_func = (PFNGLISPROGRAMPROC) glutGetProcAddress("glIsProgram");
68 glIsShader_func = (PFNGLISSHADERPROC) glutGetProcAddress("glIsShader");
69 glLinkProgram_func = (PFNGLLINKPROGRAMPROC) glutGetProcAddress("glLinkProgram");
70 glShaderSource_func = (PFNGLSHADERSOURCEPROC) glutGetProcAddress("glShaderSource");
71 glUniform3fv_func = (PFNGLUNIFORM3FVPROC) glutGetProcAddress("glUniform3fv");
72 glUniform4fv_func = (PFNGLUNIFORM3FVPROC) glutGetProcAddress("glUniform4fv");
73 glUniformMatrix4fv_func = (PFNGLUNIFORMMATRIX4FVPROC) glutGetProcAddress("glUniformMatrix4fv");
74 glUseProgram_func = (PFNGLUSEPROGRAMPROC) glutGetProcAddress("glUseProgram");
75
76 /* GL_ARB_vertex/fragment_program */
77 glBindProgramARB_func = (PFNGLBINDPROGRAMARBPROC) glutGetProcAddress("glBindProgramARB");
78 glDeleteProgramsARB_func = (PFNGLDELETEPROGRAMSARBPROC) glutGetProcAddress("glDeleteProgramsARB");
79 glGenProgramsARB_func = (PFNGLGENPROGRAMSARBPROC) glutGetProcAddress("glGenProgramsARB");
80 glGetProgramLocalParameterdvARB_func = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) glutGetProcAddress("glGetProgramLocalParameterdvARB");
81 glIsProgramARB_func = (PFNGLISPROGRAMARBPROC) glutGetProcAddress("glIsProgramARB");
82 glProgramLocalParameter4dARB_func = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) glutGetProcAddress("glProgramLocalParameter4dARB");
83 glProgramLocalParameter4fvARB_func = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) glutGetProcAddress("glProgramLocalParameter4fvARB");
84 glProgramStringARB_func = (PFNGLPROGRAMSTRINGARBPROC) glutGetProcAddress("glProgramStringARB");
85 glVertexAttrib1fARB_func = (PFNGLVERTEXATTRIB1FARBPROC) glutGetProcAddress("glVertexAttrib1fARB");
86
87 /* GL_APPLE_vertex_array_object */
88 glBindVertexArrayAPPLE_func = (PFNGLBINDVERTEXARRAYAPPLEPROC) glutGetProcAddress("glBindVertexArrayAPPLE");
89 glDeleteVertexArraysAPPLE_func = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) glutGetProcAddress("glDeleteVertexArraysAPPLE");
90 glGenVertexArraysAPPLE_func = (PFNGLGENVERTEXARRAYSAPPLEPROC) glutGetProcAddress("glGenVertexArraysAPPLE");
91 glIsVertexArrayAPPLE_func = (PFNGLISVERTEXARRAYAPPLEPROC) glutGetProcAddress("glIsVertexArrayAPPLE");
92
93}
94