Skip to content

Commit b7dbe39

Browse files
committed
damn
1 parent 44151a5 commit b7dbe39

1 file changed

Lines changed: 152 additions & 129 deletions

File tree

native/src/gles2_shim.c

Lines changed: 152 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -4,96 +4,120 @@
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)
188
typedef char GLchar;
19-
typedef ptrdiff_t GLintptr;
209
typedef 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

98122
void 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

Comments
 (0)