44#include <stddef.h>
55#include <stdio.h>
66
7- typedef float GLfloat ;
8- typedef signed char GLbyte ;
9- typedef unsigned int GLenum ;
10- typedef unsigned int GLuint ;
11- typedef int GLint ;
12- typedef int GLsizei ;
13- typedef unsigned int GLbitfield ;
14- typedef double GLclampd ;
15- typedef float GLclampf ;
16- typedef unsigned char GLubyte ;
17- typedef unsigned char GLboolean ;
7+ // Definitions from GLES2/gl2.h (simplified)
188typedef char GLchar ;
19- typedef ptrdiff_t GLintptr ;
209typedef ptrdiff_t GLsizeiptr ;
10+ typedef ptrdiff_t GLintptr ;
11+ typedef unsigned int GLbitfield ;
12+ typedef int GLsizei ;
13+ typedef int GLint ;
14+ typedef unsigned int GLuint ;
15+ typedef unsigned int GLenum ;
16+ typedef unsigned char GLboolean ;
17+ typedef float GLfloat ;
18+ typedef float GLclampf ;
2119
22- #define GL_FRAGMENT_SHADER 0x8B30
23- #define GL_VERTEX_SHADER 0x8B31
24- #define GL_FRAMEBUFFER 0x8D40
25- #define GL_COLOR_ATTACHMENT0 0x8CE0
26- #define GL_TEXTURE0 0x84C0
27- #define GL_ARRAY_BUFFER 0x8892
28- #define GL_ELEMENT_ARRAY_BUFFER 0x8893
29-
30- typedef void (APIENTRY * PFNGLGENFRAMEBUFFERSPROC )(GLsizei , GLuint * );
31- typedef void (APIENTRY * PFNGLBINDFRAMEBUFFERPROC )(GLenum , GLuint );
32- typedef void (APIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC )(GLenum , GLenum , GLenum , GLuint , GLint );
33- typedef void (APIENTRY * PFNGLDELETEFRAMEBUFFERSPROC )(GLsizei , const GLuint * );
34- typedef GLenum (APIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC )(GLenum );
35- typedef void (APIENTRY * PFNGLACTIVETEXTUREPROC )(GLenum );
36- typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEPROC )(GLenum , GLenum , GLenum , GLenum );
37- typedef GLuint (APIENTRY * PFNGLCREATESHADERPROC )(GLenum );
38- typedef void (APIENTRY * PFNGLSHADERSOURCEPROC )(GLuint , GLsizei , const GLchar * const * , const GLint * );
39- typedef void (APIENTRY * PFNGLCOMPILESHADERPROC )(GLuint );
40- typedef void (APIENTRY * PFNGLGETSHADERIVPROC )(GLuint , GLenum , GLint * );
41- typedef void (APIENTRY * PFNGLGETSHADERINFOLOGPROC )(GLuint , GLsizei , GLsizei * , GLchar * );
42- typedef void (APIENTRY * PFNGLDELETESHADERPROC )(GLuint );
43- typedef GLuint (APIENTRY * PFNGLCREATEPROGRAMPROC )(void );
44- typedef void (APIENTRY * PFNGLATTACHSHADERPROC )(GLuint , GLuint );
45- typedef void (APIENTRY * PFNGLDETACHSHADERPROC )(GLuint , GLuint );
46- typedef void (APIENTRY * PFNGLLINKPROGRAMPROC )(GLuint );
47- typedef void (APIENTRY * PFNGLGETPROGRAMIVPROC )(GLuint , GLenum , GLint * );
48- typedef void (APIENTRY * PFNGLGETPROGRAMINFOLOGPROC )(GLuint , GLsizei , GLsizei * , GLchar * );
49- typedef void (APIENTRY * PFNGLUSEPROGRAMPROC )(GLuint );
50- typedef void (APIENTRY * PFNGLDELETEPROGRAMPROC )(GLuint );
51- typedef GLint (APIENTRY * PFNGLGETATTRIBLOCATIONPROC )(GLuint , const GLchar * );
52- typedef GLint (APIENTRY * PFNGLGETUNIFORMLOCATIONPROC )(GLuint , const GLchar * );
53- typedef void (APIENTRY * PFNGLUNIFORM1IPROC )(GLint , GLint );
54- typedef void (APIENTRY * PFNGLUNIFORMMATRIX4FVPROC )(GLint , GLsizei , GLboolean , const GLfloat * );
55- typedef void (APIENTRY * PFNGLUNIFORM4FPROC )(GLint , GLfloat , GLfloat , GLfloat , GLfloat );
56- typedef void (APIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC )(GLuint );
57- typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERPROC )(GLuint , GLint , GLenum , GLboolean , GLsizei , const void * );
58- typedef void (APIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC )(GLuint );
59- typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVPROC )(GLuint , GLenum , GLint * );
60- typedef void (APIENTRY * PFNGLVALIDATEPROGRAMPROC )(GLuint );
61- typedef void (APIENTRY * PFNGLBINDBUFFERPROC )(GLenum , GLuint );
20+ // Pointers
21+ typedef void (APIENTRY * PFN_glGenFramebuffers )(GLsizei n , GLuint * framebuffers );
22+ typedef void (APIENTRY * PFN_glBindFramebuffer )(GLenum target , GLuint framebuffer );
23+ typedef void (APIENTRY * PFN_glFramebufferTexture2D )(GLenum target , GLenum attachment , GLenum textarget , GLuint texture , GLint level );
24+ typedef void (APIENTRY * PFN_glDeleteFramebuffers )(GLsizei n , const GLuint * framebuffers );
25+ typedef GLenum (APIENTRY * PFN_glCheckFramebufferStatus )(GLenum target );
26+ typedef void (APIENTRY * PFN_glActiveTexture )(GLenum texture );
27+ typedef void (APIENTRY * PFN_glBlendFuncSeparate )(GLenum sfactorRGB , GLenum dfactorRGB , GLenum sfactorAlpha , GLenum dfactorAlpha );
28+ typedef GLuint (APIENTRY * PFN_glCreateShader )(GLenum type );
29+ typedef void (APIENTRY * PFN_glShaderSource )(GLuint shader , GLsizei count , const GLchar * const * string , const GLint * length );
30+ typedef void (APIENTRY * PFN_glCompileShader )(GLuint shader );
31+ typedef void (APIENTRY * PFN_glGetShaderiv )(GLuint shader , GLenum pname , GLint * params );
32+ typedef void (APIENTRY * PFN_glGetShaderInfoLog )(GLuint shader , GLsizei bufSize , GLsizei * length , GLchar * infoLog );
33+ typedef void (APIENTRY * PFN_glDeleteShader )(GLuint shader );
34+ typedef GLuint (APIENTRY * PFN_glCreateProgram )(void );
35+ typedef void (APIENTRY * PFN_glAttachShader )(GLuint program , GLuint shader );
36+ typedef void (APIENTRY * PFN_glDetachShader )(GLuint program , GLuint shader );
37+ typedef void (APIENTRY * PFN_glLinkProgram )(GLuint program );
38+ typedef void (APIENTRY * PFN_glGetProgramiv )(GLuint program , GLenum pname , GLint * params );
39+ typedef void (APIENTRY * PFN_glGetProgramInfoLog )(GLuint program , GLsizei bufSize , GLsizei * length , GLchar * infoLog );
40+ typedef void (APIENTRY * PFN_glUseProgram )(GLuint program );
41+ typedef void (APIENTRY * PFN_glDeleteProgram )(GLuint program );
42+ typedef GLint (APIENTRY * PFN_glGetAttribLocation )(GLuint program , const GLchar * name );
43+ typedef GLint (APIENTRY * PFN_glGetUniformLocation )(GLuint program , const GLchar * name );
44+ typedef void (APIENTRY * PFN_glUniform1i )(GLint location , GLint v0 );
45+ typedef void (APIENTRY * PFN_glUniformMatrix4fv )(GLint location , GLsizei count , GLboolean transpose , const GLfloat * value );
46+ typedef void (APIENTRY * PFN_glUniform4f )(GLint location , GLfloat v0 , GLfloat v1 , GLfloat v2 , GLfloat v3 );
47+ typedef void (APIENTRY * PFN_glEnableVertexAttribArray )(GLuint index );
48+ typedef void (APIENTRY * PFN_glVertexAttribPointer )(GLuint index , GLint size , GLenum type , GLboolean normalized , GLsizei stride , const void * pointer );
49+ typedef void (APIENTRY * PFN_glDisableVertexAttribArray )(GLuint index );
50+ typedef void (APIENTRY * PFN_glGetVertexAttribiv )(GLuint index , GLenum pname , GLint * params );
51+ typedef void (APIENTRY * PFN_glValidateProgram )(GLuint program );
52+ typedef void (APIENTRY * PFN_glBindBuffer )(GLenum target , GLuint buffer );
6253
63- #define GET_PROC (name , type ) name = (type)wglGetProcAddress(#name); if (!name) name = (type)GetProcAddress(hLib, #name);
54+ // Global function pointers
55+ static PFN_glGenFramebuffers ptr_glGenFramebuffers = NULL ;
56+ static PFN_glBindFramebuffer ptr_glBindFramebuffer = NULL ;
57+ static PFN_glFramebufferTexture2D ptr_glFramebufferTexture2D = NULL ;
58+ static PFN_glDeleteFramebuffers ptr_glDeleteFramebuffers = NULL ;
59+ static PFN_glCheckFramebufferStatus ptr_glCheckFramebufferStatus = NULL ;
60+ static PFN_glActiveTexture ptr_glActiveTexture = NULL ;
61+ static PFN_glBlendFuncSeparate ptr_glBlendFuncSeparate = NULL ;
62+ static PFN_glCreateShader ptr_glCreateShader = NULL ;
63+ static PFN_glShaderSource ptr_glShaderSource = NULL ;
64+ static PFN_glCompileShader ptr_glCompileShader = NULL ;
65+ static PFN_glGetShaderiv ptr_glGetShaderiv = NULL ;
66+ static PFN_glGetShaderInfoLog ptr_glGetShaderInfoLog = NULL ;
67+ static PFN_glDeleteShader ptr_glDeleteShader = NULL ;
68+ static PFN_glCreateProgram ptr_glCreateProgram = NULL ;
69+ static PFN_glAttachShader ptr_glAttachShader = NULL ;
70+ static PFN_glDetachShader ptr_glDetachShader = NULL ;
71+ static PFN_glLinkProgram ptr_glLinkProgram = NULL ;
72+ static PFN_glGetProgramiv ptr_glGetProgramiv = NULL ;
73+ static PFN_glGetProgramInfoLog ptr_glGetProgramInfoLog = NULL ;
74+ static PFN_glUseProgram ptr_glUseProgram = NULL ;
75+ static PFN_glDeleteProgram ptr_glDeleteProgram = NULL ;
76+ static PFN_glGetAttribLocation ptr_glGetAttribLocation = NULL ;
77+ static PFN_glGetUniformLocation ptr_glGetUniformLocation = NULL ;
78+ static PFN_glUniform1i ptr_glUniform1i = NULL ;
79+ static PFN_glUniformMatrix4fv ptr_glUniformMatrix4fv = NULL ;
80+ static PFN_glUniform4f ptr_glUniform4f = NULL ;
81+ static PFN_glEnableVertexAttribArray ptr_glEnableVertexAttribArray = NULL ;
82+ static PFN_glVertexAttribPointer ptr_glVertexAttribPointer = NULL ;
83+ static PFN_glDisableVertexAttribArray ptr_glDisableVertexAttribArray = NULL ;
84+ static PFN_glGetVertexAttribiv ptr_glGetVertexAttribiv = NULL ;
85+ static PFN_glValidateProgram ptr_glValidateProgram = NULL ;
86+ static PFN_glBindBuffer ptr_glBindBuffer = NULL ;
6487
65- PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers ;
66- PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer ;
67- PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D ;
68- PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers ;
69- PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus ;
70- PFNGLACTIVETEXTUREPROC glActiveTexture ;
71- PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate ;
72- PFNGLCREATESHADERPROC glCreateShader ;
73- PFNGLSHADERSOURCEPROC glShaderSource ;
74- PFNGLCOMPILESHADERPROC glCompileShader ;
75- PFNGLGETSHADERIVPROC glGetShaderiv ;
76- PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog ;
77- PFNGLDELETESHADERPROC glDeleteShader ;
78- PFNGLCREATEPROGRAMPROC glCreateProgram ;
79- PFNGLATTACHSHADERPROC glAttachShader ;
80- PFNGLDETACHSHADERPROC glDetachShader ;
81- PFNGLLINKPROGRAMPROC glLinkProgram ;
82- PFNGLGETPROGRAMIVPROC glGetProgramiv ;
83- PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog ;
84- PFNGLUSEPROGRAMPROC glUseProgram ;
85- PFNGLDELETEPROGRAMPROC glDeleteProgram ;
86- PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation ;
87- PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation ;
88- PFNGLUNIFORM1IPROC glUniform1i ;
89- PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv ;
90- PFNGLUNIFORM4FPROC glUniform4f ;
91- PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray ;
92- PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer ;
93- PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray ;
94- PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv ;
95- PFNGLVALIDATEPROGRAMPROC glValidateProgram ;
96- PFNGLBINDBUFFERPROC glBindBuffer ;
88+ // Wrapper functions
89+ void APIENTRY glGenFramebuffers (GLsizei n , GLuint * framebuffers ) { if (ptr_glGenFramebuffers ) ptr_glGenFramebuffers (n , framebuffers ); }
90+ void APIENTRY glBindFramebuffer (GLenum target , GLuint framebuffer ) { if (ptr_glBindFramebuffer ) ptr_glBindFramebuffer (target , framebuffer ); }
91+ void APIENTRY glFramebufferTexture2D (GLenum target , GLenum attachment , GLenum textarget , GLuint texture , GLint level ) { if (ptr_glFramebufferTexture2D ) ptr_glFramebufferTexture2D (target , attachment , textarget , texture , level ); }
92+ void APIENTRY glDeleteFramebuffers (GLsizei n , const GLuint * framebuffers ) { if (ptr_glDeleteFramebuffers ) ptr_glDeleteFramebuffers (n , framebuffers ); }
93+ GLenum APIENTRY glCheckFramebufferStatus (GLenum target ) { return ptr_glCheckFramebufferStatus ? ptr_glCheckFramebufferStatus (target ) : 0 ; }
94+ void APIENTRY glActiveTexture (GLenum texture ) { if (ptr_glActiveTexture ) ptr_glActiveTexture (texture ); }
95+ void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB , GLenum dfactorRGB , GLenum sfactorAlpha , GLenum dfactorAlpha ) { if (ptr_glBlendFuncSeparate ) ptr_glBlendFuncSeparate (sfactorRGB , dfactorRGB , sfactorAlpha , dfactorAlpha ); }
96+ GLuint APIENTRY glCreateShader (GLenum type ) { return ptr_glCreateShader ? ptr_glCreateShader (type ) : 0 ; }
97+ void APIENTRY glShaderSource (GLuint shader , GLsizei count , const GLchar * const * string , const GLint * length ) { if (ptr_glShaderSource ) ptr_glShaderSource (shader , count , string , length ); }
98+ void APIENTRY glCompileShader (GLuint shader ) { if (ptr_glCompileShader ) ptr_glCompileShader (shader ); }
99+ void APIENTRY glGetShaderiv (GLuint shader , GLenum pname , GLint * params ) { if (ptr_glGetShaderiv ) ptr_glGetShaderiv (shader , pname , params ); }
100+ void APIENTRY glGetShaderInfoLog (GLuint shader , GLsizei bufSize , GLsizei * length , GLchar * infoLog ) { if (ptr_glGetShaderInfoLog ) ptr_glGetShaderInfoLog (shader , bufSize , length , infoLog ); }
101+ void APIENTRY glDeleteShader (GLuint shader ) { if (ptr_glDeleteShader ) ptr_glDeleteShader (shader ); }
102+ GLuint APIENTRY glCreateProgram (void ) { return ptr_glCreateProgram ? ptr_glCreateProgram () : 0 ; }
103+ void APIENTRY glAttachShader (GLuint program , GLuint shader ) { if (ptr_glAttachShader ) ptr_glAttachShader (program , shader ); }
104+ void APIENTRY glDetachShader (GLuint program , GLuint shader ) { if (ptr_glDetachShader ) ptr_glDetachShader (program , shader ); }
105+ void APIENTRY glLinkProgram (GLuint program ) { if (ptr_glLinkProgram ) ptr_glLinkProgram (program ); }
106+ void APIENTRY glGetProgramiv (GLuint program , GLenum pname , GLint * params ) { if (ptr_glGetProgramiv ) ptr_glGetProgramiv (program , pname , params ); }
107+ void APIENTRY glGetProgramInfoLog (GLuint program , GLsizei bufSize , GLsizei * length , GLchar * infoLog ) { if (ptr_glGetProgramInfoLog ) ptr_glGetProgramInfoLog (program , bufSize , length , infoLog ); }
108+ void APIENTRY glUseProgram (GLuint program ) { if (ptr_glUseProgram ) ptr_glUseProgram (program ); }
109+ void APIENTRY glDeleteProgram (GLuint program ) { if (ptr_glDeleteProgram ) ptr_glDeleteProgram (program ); }
110+ GLint APIENTRY glGetAttribLocation (GLuint program , const GLchar * name ) { return ptr_glGetAttribLocation ? ptr_glGetAttribLocation (program , name ) : -1 ; }
111+ GLint APIENTRY glGetUniformLocation (GLuint program , const GLchar * name ) { return ptr_glGetUniformLocation ? ptr_glGetUniformLocation (program , name ) : -1 ; }
112+ void APIENTRY glUniform1i (GLint location , GLint v0 ) { if (ptr_glUniform1i ) ptr_glUniform1i (location , v0 ); }
113+ void APIENTRY glUniformMatrix4fv (GLint location , GLsizei count , GLboolean transpose , const GLfloat * value ) { if (ptr_glUniformMatrix4fv ) ptr_glUniformMatrix4fv (location , count , transpose , value ); }
114+ void APIENTRY glUniform4f (GLint location , GLfloat v0 , GLfloat v1 , GLfloat v2 , GLfloat v3 ) { if (ptr_glUniform4f ) ptr_glUniform4f (location , v0 , v1 , v2 , v3 ); }
115+ void APIENTRY glEnableVertexAttribArray (GLuint index ) { if (ptr_glEnableVertexAttribArray ) ptr_glEnableVertexAttribArray (index ); }
116+ void APIENTRY glVertexAttribPointer (GLuint index , GLint size , GLenum type , GLboolean normalized , GLsizei stride , const void * pointer ) { if (ptr_glVertexAttribPointer ) ptr_glVertexAttribPointer (index , size , type , normalized , stride , pointer ); }
117+ void APIENTRY glDisableVertexAttribArray (GLuint index ) { if (ptr_glDisableVertexAttribArray ) ptr_glDisableVertexAttribArray (index ); }
118+ void APIENTRY glGetVertexAttribiv (GLuint index , GLenum pname , GLint * params ) { if (ptr_glGetVertexAttribiv ) ptr_glGetVertexAttribiv (index , pname , params ); }
119+ void APIENTRY glValidateProgram (GLuint program ) { if (ptr_glValidateProgram ) ptr_glValidateProgram (program ); }
120+ void APIENTRY glBindBuffer (GLenum target , GLuint buffer ) { if (ptr_glBindBuffer ) ptr_glBindBuffer (target , buffer ); }
97121
98122void init_gles2_shim () {
99123 static int initialized = 0 ;
@@ -103,52 +127,51 @@ void init_gles2_shim() {
103127 fprintf (stderr , "Failed to get handle for opengl32.dll\n" );
104128 return ;
105129 }
106-
107- #undef GET_PROC
108- #define GET_PROC (name , type ) \
109- name = (type)wglGetProcAddress(#name); \
110- if (!name) name = (type)GetProcAddress(hLib, #name); \
111- if (!name) fprintf(stderr, "Failed to load function: %s\n", #name);
112130
113- #define GET_PROC_EXT (name , type , ext ) \
114- name = (type)wglGetProcAddress(#name); \
115- if (!name) name = (type)wglGetProcAddress(#name #ext); \
116- if (!name) name = (type)GetProcAddress(hLib, #name); \
117- if (!name) fprintf(stderr, "Failed to load function: %s (and %s)\n", #name, #name #ext);
131+ #define LOAD (ptr , name , type ) \
132+ ptr = (type)wglGetProcAddress(#name); \
133+ if (!ptr) ptr = (type)GetProcAddress(hLib, #name); \
134+ if (!ptr) fprintf(stderr, "Failed to load function: %s\n", #name)
135+
136+ #define LOAD_EXT (ptr , name , type , ext ) \
137+ ptr = (type)wglGetProcAddress(#name); \
138+ if (!ptr) ptr = (type)wglGetProcAddress(#name #ext); \
139+ if (!ptr) ptr = (type)GetProcAddress(hLib, #name); \
140+ if (!ptr) fprintf(stderr, "Failed to load function: %s (and %s)\n", #name, #name #ext)
118141
119- GET_PROC_EXT ( glGenFramebuffers , PFNGLGENFRAMEBUFFERSPROC , EXT );
120- GET_PROC_EXT ( glBindFramebuffer , PFNGLBINDFRAMEBUFFERPROC , EXT );
121- GET_PROC_EXT ( glFramebufferTexture2D , PFNGLFRAMEBUFFERTEXTURE2DPROC , EXT );
122- GET_PROC_EXT ( glDeleteFramebuffers , PFNGLDELETEFRAMEBUFFERSPROC , EXT );
123- GET_PROC_EXT ( glCheckFramebufferStatus , PFNGLCHECKFRAMEBUFFERSTATUSPROC , EXT );
124- GET_PROC_EXT ( glActiveTexture , PFNGLACTIVETEXTUREPROC , ARB );
125- GET_PROC ( glBlendFuncSeparate , PFNGLBLENDFUNCSEPARATEPROC );
126- GET_PROC ( glCreateShader , PFNGLCREATESHADERPROC );
127- GET_PROC ( glShaderSource , PFNGLSHADERSOURCEPROC );
128- GET_PROC ( glCompileShader , PFNGLCOMPILESHADERPROC );
129- GET_PROC ( glGetShaderiv , PFNGLGETSHADERIVPROC );
130- GET_PROC ( glGetShaderInfoLog , PFNGLGETSHADERINFOLOGPROC );
131- GET_PROC ( glDeleteShader , PFNGLDELETESHADERPROC );
132- GET_PROC ( glCreateProgram , PFNGLCREATEPROGRAMPROC );
133- GET_PROC ( glAttachShader , PFNGLATTACHSHADERPROC );
134- GET_PROC ( glDetachShader , PFNGLDETACHSHADERPROC );
135- GET_PROC ( glLinkProgram , PFNGLLINKPROGRAMPROC );
136- GET_PROC ( glGetProgramiv , PFNGLGETPROGRAMIVPROC );
137- GET_PROC ( glGetProgramInfoLog , PFNGLGETPROGRAMINFOLOGPROC );
138- GET_PROC ( glUseProgram , PFNGLUSEPROGRAMPROC );
139- GET_PROC ( glDeleteProgram , PFNGLDELETEPROGRAMPROC );
140- GET_PROC ( glGetAttribLocation , PFNGLGETATTRIBLOCATIONPROC );
141- GET_PROC ( glGetUniformLocation , PFNGLGETUNIFORMLOCATIONPROC );
142- GET_PROC ( glUniform1i , PFNGLUNIFORM1IPROC );
143- GET_PROC ( glUniformMatrix4fv , PFNGLUNIFORMMATRIX4FVPROC );
144- GET_PROC ( glUniform4f , PFNGLUNIFORM4FPROC );
145- GET_PROC ( glEnableVertexAttribArray , PFNGLENABLEVERTEXATTRIBARRAYPROC );
146- GET_PROC ( glVertexAttribPointer , PFNGLVERTEXATTRIBPOINTERPROC );
147- GET_PROC ( glDisableVertexAttribArray , PFNGLDISABLEVERTEXATTRIBARRAYPROC );
148- GET_PROC ( glGetVertexAttribiv , PFNGLGETVERTEXATTRIBIVPROC );
149- GET_PROC ( glValidateProgram , PFNGLVALIDATEPROGRAMPROC );
150- GET_PROC ( glBindBuffer , PFNGLBINDBUFFERPROC );
142+ LOAD_EXT ( ptr_glGenFramebuffers , glGenFramebuffers , PFN_glGenFramebuffers , EXT );
143+ LOAD_EXT ( ptr_glBindFramebuffer , glBindFramebuffer , PFN_glBindFramebuffer , EXT );
144+ LOAD_EXT ( ptr_glFramebufferTexture2D , glFramebufferTexture2D , PFN_glFramebufferTexture2D , EXT );
145+ LOAD_EXT ( ptr_glDeleteFramebuffers , glDeleteFramebuffers , PFN_glDeleteFramebuffers , EXT );
146+ LOAD_EXT ( ptr_glCheckFramebufferStatus , glCheckFramebufferStatus , PFN_glCheckFramebufferStatus , EXT );
147+ LOAD_EXT ( ptr_glActiveTexture , glActiveTexture , PFN_glActiveTexture , ARB );
148+ LOAD ( ptr_glBlendFuncSeparate , glBlendFuncSeparate , PFN_glBlendFuncSeparate );
149+ LOAD ( ptr_glCreateShader , glCreateShader , PFN_glCreateShader );
150+ LOAD ( ptr_glShaderSource , glShaderSource , PFN_glShaderSource );
151+ LOAD ( ptr_glCompileShader , glCompileShader , PFN_glCompileShader );
152+ LOAD ( ptr_glGetShaderiv , glGetShaderiv , PFN_glGetShaderiv );
153+ LOAD ( ptr_glGetShaderInfoLog , glGetShaderInfoLog , PFN_glGetShaderInfoLog );
154+ LOAD ( ptr_glDeleteShader , glDeleteShader , PFN_glDeleteShader );
155+ LOAD ( ptr_glCreateProgram , glCreateProgram , PFN_glCreateProgram );
156+ LOAD ( ptr_glAttachShader , glAttachShader , PFN_glAttachShader );
157+ LOAD ( ptr_glDetachShader , glDetachShader , PFN_glDetachShader );
158+ LOAD ( ptr_glLinkProgram , glLinkProgram , PFN_glLinkProgram );
159+ LOAD ( ptr_glGetProgramiv , glGetProgramiv , PFN_glGetProgramiv );
160+ LOAD ( ptr_glGetProgramInfoLog , glGetProgramInfoLog , PFN_glGetProgramInfoLog );
161+ LOAD ( ptr_glUseProgram , glUseProgram , PFN_glUseProgram );
162+ LOAD ( ptr_glDeleteProgram , glDeleteProgram , PFN_glDeleteProgram );
163+ LOAD ( ptr_glGetAttribLocation , glGetAttribLocation , PFN_glGetAttribLocation );
164+ LOAD ( ptr_glGetUniformLocation , glGetUniformLocation , PFN_glGetUniformLocation );
165+ LOAD ( ptr_glUniform1i , glUniform1i , PFN_glUniform1i );
166+ LOAD ( ptr_glUniformMatrix4fv , glUniformMatrix4fv , PFN_glUniformMatrix4fv );
167+ LOAD ( ptr_glUniform4f , glUniform4f , PFN_glUniform4f );
168+ LOAD ( ptr_glEnableVertexAttribArray , glEnableVertexAttribArray , PFN_glEnableVertexAttribArray );
169+ LOAD ( ptr_glVertexAttribPointer , glVertexAttribPointer , PFN_glVertexAttribPointer );
170+ LOAD ( ptr_glDisableVertexAttribArray , glDisableVertexAttribArray , PFN_glDisableVertexAttribArray );
171+ LOAD ( ptr_glGetVertexAttribiv , glGetVertexAttribiv , PFN_glGetVertexAttribiv );
172+ LOAD ( ptr_glValidateProgram , glValidateProgram , PFN_glValidateProgram );
173+ LOAD ( ptr_glBindBuffer , glBindBuffer , PFN_glBindBuffer );
151174
152175 initialized = 1 ;
153176}
154- #endif
177+ #endif
0 commit comments