Fix OpenGL/EGL entry function calling convention

Function pointers returned through eglGetProcAddress should have a
GL_APIENTRY calling convention to avoid mismatches with their
declarations.

Bug: b/140700303
Change-Id: I706ca788e54a897a66cfdf5ba959ec6e3dc718ee
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/36228
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp
index 70df27f..7dd5783 100644
--- a/src/OpenGL/libEGL/libEGL.cpp
+++ b/src/OpenGL/libEGL/libEGL.cpp
@@ -125,7 +125,7 @@
 };
 }
 
-EGLint GetError(void)
+EGLint EGLAPIENTRY GetError(void)
 {
 	TRACE("()");
 
@@ -139,7 +139,7 @@
 	return error;
 }
 
-EGLDisplay GetDisplay(EGLNativeDisplayType display_id)
+EGLDisplay EGLAPIENTRY GetDisplay(EGLNativeDisplayType display_id)
 {
 	TRACE("(EGLNativeDisplayType display_id = %p)", display_id);
 
@@ -160,7 +160,7 @@
 	return success(PRIMARY_DISPLAY);   // We only support the default display
 }
 
-EGLBoolean Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
+EGLBoolean EGLAPIENTRY Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLint *major = %p, EGLint *minor = %p)",
 		  dpy, major, minor);
@@ -183,7 +183,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean Terminate(EGLDisplay dpy)
+EGLBoolean EGLAPIENTRY Terminate(EGLDisplay dpy)
 {
 	TRACE("(EGLDisplay dpy = %p)", dpy);
 
@@ -199,7 +199,7 @@
 	return success(EGL_TRUE);
 }
 
-const char *QueryString(EGLDisplay dpy, EGLint name)
+const char *EGLAPIENTRY QueryString(EGLDisplay dpy, EGLint name)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLint name = %d)", dpy, name);
 
@@ -249,7 +249,7 @@
 	return error(EGL_BAD_PARAMETER, (const char*)nullptr);
 }
 
-EGLBoolean GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
+EGLBoolean EGLAPIENTRY GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig *configs = %p, "
 	      "EGLint config_size = %d, EGLint *num_config = %p)",
@@ -277,7 +277,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
+EGLBoolean EGLAPIENTRY ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
 {
 	TRACE("(EGLDisplay dpy = %p, const EGLint *attrib_list = %p, "
 	      "EGLConfig *configs = %p, EGLint config_size = %d, EGLint *num_config = %p)",
@@ -310,7 +310,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
+EGLBoolean EGLAPIENTRY GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLint attribute = %d, EGLint *value = %p)",
 	      dpy, config, attribute, value);
@@ -330,7 +330,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLSurface CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
+EGLSurface EGLAPIENTRY CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, void *native_window = %p, "
 	      "const EGLint *attrib_list = %p)", dpy, config, native_window, attrib_list);
@@ -350,7 +350,7 @@
 	return display->createWindowSurface((EGLNativeWindowType)native_window, config, attrib_list);
 }
 
-EGLSurface CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, void *native_window = %p, "
 	      "const EGLint *attrib_list = %p)", dpy, config, native_window, attrib_list);
@@ -359,7 +359,7 @@
 	return CreatePlatformWindowSurface(dpy, config, native_window, &attribs);
 }
 
-EGLSurface CreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLNativeWindowType window = %p, "
 	      "const EGLint *attrib_list = %p)", dpy, config, window, attrib_list);
@@ -368,7 +368,7 @@
 	return CreatePlatformWindowSurface(dpy, config, (void*)window, &attribs);
 }
 
-EGLSurface CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, const EGLint *attrib_list = %p)",
 	      dpy, config, attrib_list);
@@ -383,7 +383,7 @@
 	return display->createPBufferSurface(config, attrib_list);
 }
 
-EGLSurface CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
+EGLSurface EGLAPIENTRY CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, void *native_pixmap = %p, "
 	      "const EGLint *attrib_list = %p)", dpy, config, native_pixmap, attrib_list);
@@ -400,7 +400,7 @@
 	return success(EGL_NO_SURFACE);
 }
 
-EGLSurface CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, void *native_pixmap = %p, "
 	      "const EGLint *attrib_list = %p)", dpy, config, native_pixmap, attrib_list);
@@ -409,7 +409,7 @@
 	return CreatePlatformPixmapSurface(dpy, config, native_pixmap, &attribs);
 }
 
-EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLNativePixmapType pixmap = %p, "
 	      "const EGLint *attrib_list = %p)", dpy, config, pixmap, attrib_list);
@@ -418,7 +418,7 @@
 	return CreatePlatformPixmapSurface(dpy, config, (void*)pixmap, &attribs);
 }
 
-EGLBoolean DestroySurface(EGLDisplay dpy, EGLSurface surface)
+EGLBoolean EGLAPIENTRY DestroySurface(EGLDisplay dpy, EGLSurface surface)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p)", dpy, surface);
 
@@ -440,7 +440,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
+EGLBoolean EGLAPIENTRY QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint attribute = %d, EGLint *value = %p)",
 	      dpy, surface, attribute, value);
@@ -530,7 +530,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean BindAPI(EGLenum api)
+EGLBoolean EGLAPIENTRY BindAPI(EGLenum api)
 {
 	TRACE("(EGLenum api = 0x%X)", api);
 
@@ -550,7 +550,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLenum QueryAPI(void)
+EGLenum EGLAPIENTRY QueryAPI(void)
 {
 	TRACE("()");
 
@@ -559,7 +559,7 @@
 	return success(API);
 }
 
-EGLBoolean WaitClient(void)
+EGLBoolean EGLAPIENTRY WaitClient(void)
 {
 	TRACE("()");
 
@@ -574,7 +574,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean ReleaseThread(void)
+EGLBoolean EGLAPIENTRY ReleaseThread(void)
 {
 	TRACE("()");
 
@@ -583,7 +583,7 @@
 	return EGL_TRUE;   // success() is not called here because it would re-allocate thread-local storage.
 }
 
-EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
+EGLSurface EGLAPIENTRY CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLenum buftype = 0x%X, EGLClientBuffer buffer = %p, "
 	      "EGLConfig config = %p, const EGLint *attrib_list = %p)",
@@ -610,7 +610,7 @@
 	};
 }
 
-EGLBoolean SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
+EGLBoolean EGLAPIENTRY SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint attribute = %d, EGLint value = %d)",
 	      dpy, surface, attribute, value);
@@ -667,7 +667,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
+EGLBoolean EGLAPIENTRY BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint buffer = %d)", dpy, surface, buffer);
 
@@ -709,7 +709,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
+EGLBoolean EGLAPIENTRY ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint buffer = %d)", dpy, surface, buffer);
 
@@ -746,7 +746,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean SwapInterval(EGLDisplay dpy, EGLint interval)
+EGLBoolean EGLAPIENTRY SwapInterval(EGLDisplay dpy, EGLint interval)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLint interval = %d)", dpy, interval);
 
@@ -770,7 +770,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLContext CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
+EGLContext EGLAPIENTRY CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLContext share_context = %p, "
 	      "const EGLint *attrib_list = %p)", dpy, config, share_context, attrib_list);
@@ -876,7 +876,7 @@
 	return display->createContext(config, shareContext, majorVersion);
 }
 
-EGLBoolean DestroyContext(EGLDisplay dpy, EGLContext ctx)
+EGLBoolean EGLAPIENTRY DestroyContext(EGLDisplay dpy, EGLContext ctx)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p)", dpy, ctx);
 
@@ -898,7 +898,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
+EGLBoolean EGLAPIENTRY MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSurface draw = %p, EGLSurface read = %p, EGLContext ctx = %p)",
 	      dpy, draw, read, ctx);
@@ -954,7 +954,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLContext GetCurrentContext(void)
+EGLContext EGLAPIENTRY GetCurrentContext(void)
 {
 	TRACE("()");
 
@@ -963,7 +963,7 @@
 	return success(context);
 }
 
-EGLSurface GetCurrentSurface(EGLint readdraw)
+EGLSurface EGLAPIENTRY GetCurrentSurface(EGLint readdraw)
 {
 	TRACE("(EGLint readdraw = %d)", readdraw);
 
@@ -983,7 +983,7 @@
 	}
 }
 
-EGLDisplay GetCurrentDisplay(void)
+EGLDisplay EGLAPIENTRY GetCurrentDisplay(void)
 {
 	TRACE("()");
 
@@ -1004,7 +1004,7 @@
 	return success(display->getEGLDisplay());
 }
 
-EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
+EGLBoolean EGLAPIENTRY QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p, EGLint attribute = %d, EGLint *value = %p)",
 	      dpy, ctx, attribute, value);
@@ -1038,7 +1038,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean WaitGL(void)
+EGLBoolean EGLAPIENTRY WaitGL(void)
 {
 	TRACE("()");
 
@@ -1053,7 +1053,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean WaitNative(EGLint engine)
+EGLBoolean EGLAPIENTRY WaitNative(EGLint engine)
 {
 	TRACE("(EGLint engine = %d)", engine);
 
@@ -1084,7 +1084,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean SwapBuffers(EGLDisplay dpy, EGLSurface surface)
+EGLBoolean EGLAPIENTRY SwapBuffers(EGLDisplay dpy, EGLSurface surface)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p)", dpy, surface);
 
@@ -1106,7 +1106,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLBoolean CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
+EGLBoolean EGLAPIENTRY CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLNativePixmapType target = %p)", dpy, surface, target);
 
@@ -1123,7 +1123,7 @@
 	return success(EGL_FALSE);
 }
 
-EGLImage CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
+EGLImage EGLAPIENTRY CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p, EGLenum target = 0x%X, buffer = %p, const EGLAttrib *attrib_list = %p)", dpy, ctx, target, buffer, attrib_list);
 
@@ -1212,7 +1212,7 @@
 	return success(eglImage);
 }
 
-EGLImageKHR CreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
+EGLImageKHR EGLAPIENTRY CreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p, EGLenum target = 0x%X, buffer = %p, const EGLint attrib_list = %p)", dpy, ctx, target, buffer, attrib_list);
 
@@ -1220,7 +1220,7 @@
 	return CreateImage(dpy, ctx, target, buffer, &attribs);
 }
 
-EGLBoolean DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
+EGLBoolean EGLAPIENTRY DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLImageKHR image = %p)", dpy, image);
 
@@ -1239,7 +1239,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLDisplay GetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list)
+EGLDisplay EGLAPIENTRY GetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list)
 {
 	TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLAttrib *attrib_list = %p)", platform, native_display, attrib_list);
 
@@ -1294,7 +1294,7 @@
 	#endif
 }
 
-EGLDisplay GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list)
+EGLDisplay EGLAPIENTRY GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list)
 {
 	TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLint *attrib_list = %p)", platform, native_display, attrib_list);
 
@@ -1302,7 +1302,7 @@
 	return GetPlatformDisplay(platform, native_display, &attribs);
 }
 
-EGLSync CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
+EGLSync EGLAPIENTRY CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLunum type = %x, EGLAttrib *attrib_list=%p)", dpy, type, attrib_list);
 
@@ -1335,7 +1335,7 @@
 	return success(sync);
 }
 
-EGLSyncKHR CreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
+EGLSyncKHR EGLAPIENTRY CreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLunum type = %x, EGLint *attrib_list=%p)", dpy, type, attrib_list);
 
@@ -1343,7 +1343,7 @@
 	return CreateSync(dpy, type, &attribs);
 }
 
-EGLBoolean DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
+EGLBoolean EGLAPIENTRY DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSyncKHR sync = %p)", dpy, sync);
 
@@ -1365,7 +1365,7 @@
 	return success(EGL_TRUE);
 }
 
-EGLint ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
+EGLint EGLAPIENTRY ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSyncKHR sync = %p, EGLint flags = %x, EGLTimeKHR value = %llx)", dpy, sync, flags, timeout);
 
@@ -1393,7 +1393,7 @@
 	return success(EGL_CONDITION_SATISFIED_KHR);
 }
 
-EGLBoolean GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value)
+EGLBoolean EGLAPIENTRY GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value)
 {
 	TRACE("(EGLDisplay dpy = %p, EGLSyncKHR sync = %p, EGLint attribute = %x, EGLAttrib *value = %p)", dpy, sync, attribute, value);
 
@@ -1432,7 +1432,7 @@
 	}
 }
 
-EGLBoolean GetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
+EGLBoolean EGLAPIENTRY GetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
 {
 	EGLAttrib attrib_value;
 	EGLBoolean result = GetSyncAttrib(dpy, sync, attribute, &attrib_value);
@@ -1440,7 +1440,7 @@
 	return result;
 }
 
-__eglMustCastToProperFunctionPointerType GetProcAddress(const char *procname)
+__eglMustCastToProperFunctionPointerType EGLAPIENTRY GetProcAddress(const char *procname)
 {
 	TRACE("(const char *procname = \"%s\")", procname);
 
diff --git a/src/OpenGL/libEGL/libEGL.hpp b/src/OpenGL/libEGL/libEGL.hpp
index 68d2d80..0863cd5 100644
--- a/src/OpenGL/libEGL/libEGL.hpp
+++ b/src/OpenGL/libEGL/libEGL.hpp
@@ -25,46 +25,46 @@
 public:
 	LibEGLexports();
 
-	EGLint (*eglGetError)(void);
-	EGLDisplay (*eglGetDisplay)(EGLNativeDisplayType display_id);
-	EGLBoolean (*eglInitialize)(EGLDisplay dpy, EGLint *major, EGLint *minor);
-	EGLBoolean (*eglTerminate)(EGLDisplay dpy);
-	const char *(*eglQueryString)(EGLDisplay dpy, EGLint name);
-	EGLBoolean (*eglGetConfigs)(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-	EGLBoolean (*eglChooseConfig)(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-	EGLBoolean (*eglGetConfigAttrib)(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
-	EGLSurface (*eglCreateWindowSurface)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list);
-	EGLSurface (*eglCreatePbufferSurface)(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
-	EGLSurface (*eglCreatePixmapSurface)(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
-	EGLBoolean (*eglDestroySurface)(EGLDisplay dpy, EGLSurface surface);
-	EGLBoolean (*eglQuerySurface)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
-	EGLBoolean (*eglBindAPI)(EGLenum api);
-	EGLenum (*eglQueryAPI)(void);
-	EGLBoolean (*eglWaitClient)(void);
-	EGLBoolean (*eglReleaseThread)(void);
-	EGLSurface (*eglCreatePbufferFromClientBuffer)(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
-	EGLBoolean (*eglSurfaceAttrib)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
-	EGLBoolean (*eglBindTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-	EGLBoolean (*eglReleaseTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-	EGLBoolean (*eglSwapInterval)(EGLDisplay dpy, EGLint interval);
-	EGLContext (*eglCreateContext)(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
-	EGLBoolean (*eglDestroyContext)(EGLDisplay dpy, EGLContext ctx);
-	EGLBoolean (*eglMakeCurrent)(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
-	EGLContext (*eglGetCurrentContext)(void);
-	EGLSurface (*eglGetCurrentSurface)(EGLint readdraw);
-	EGLDisplay (*eglGetCurrentDisplay)(void);
-	EGLBoolean (*eglQueryContext)(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
-	EGLBoolean (*eglWaitGL)(void);
-	EGLBoolean (*eglWaitNative)(EGLint engine);
-	EGLBoolean (*eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface);
-	EGLBoolean (*eglCopyBuffers)(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
-	EGLImageKHR (*eglCreateImageKHR)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-	EGLBoolean (*eglDestroyImageKHR)(EGLDisplay dpy, EGLImageKHR image);
-	__eglMustCastToProperFunctionPointerType (*eglGetProcAddress)(const char*);
-	EGLSyncKHR (*eglCreateSyncKHR)(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-	EGLBoolean (*eglDestroySyncKHR)(EGLDisplay dpy, EGLSyncKHR sync);
-	EGLint (*eglClientWaitSyncKHR)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-	EGLBoolean (*eglGetSyncAttribKHR)(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
+	EGLint (EGLAPIENTRY* eglGetError)(void);
+	EGLDisplay (EGLAPIENTRY* eglGetDisplay)(EGLNativeDisplayType display_id);
+	EGLBoolean (EGLAPIENTRY* eglInitialize)(EGLDisplay dpy, EGLint *major, EGLint *minor);
+	EGLBoolean (EGLAPIENTRY* eglTerminate)(EGLDisplay dpy);
+	const char *(EGLAPIENTRY* eglQueryString)(EGLDisplay dpy, EGLint name);
+	EGLBoolean (EGLAPIENTRY* eglGetConfigs)(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+	EGLBoolean (EGLAPIENTRY* eglChooseConfig)(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+	EGLBoolean (EGLAPIENTRY* eglGetConfigAttrib)(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+	EGLSurface (EGLAPIENTRY* eglCreateWindowSurface)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list);
+	EGLSurface (EGLAPIENTRY* eglCreatePbufferSurface)(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+	EGLSurface (EGLAPIENTRY* eglCreatePixmapSurface)(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
+	EGLBoolean (EGLAPIENTRY* eglDestroySurface)(EGLDisplay dpy, EGLSurface surface);
+	EGLBoolean (EGLAPIENTRY* eglQuerySurface)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+	EGLBoolean (EGLAPIENTRY* eglBindAPI)(EGLenum api);
+	EGLenum (EGLAPIENTRY* eglQueryAPI)(void);
+	EGLBoolean (EGLAPIENTRY* eglWaitClient)(void);
+	EGLBoolean (EGLAPIENTRY* eglReleaseThread)(void);
+	EGLSurface (EGLAPIENTRY* eglCreatePbufferFromClientBuffer)(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
+	EGLBoolean (EGLAPIENTRY* eglSurfaceAttrib)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+	EGLBoolean (EGLAPIENTRY* eglBindTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+	EGLBoolean (EGLAPIENTRY* eglReleaseTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+	EGLBoolean (EGLAPIENTRY* eglSwapInterval)(EGLDisplay dpy, EGLint interval);
+	EGLContext (EGLAPIENTRY* eglCreateContext)(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
+	EGLBoolean (EGLAPIENTRY* eglDestroyContext)(EGLDisplay dpy, EGLContext ctx);
+	EGLBoolean (EGLAPIENTRY* eglMakeCurrent)(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+	EGLContext (EGLAPIENTRY* eglGetCurrentContext)(void);
+	EGLSurface (EGLAPIENTRY* eglGetCurrentSurface)(EGLint readdraw);
+	EGLDisplay (EGLAPIENTRY* eglGetCurrentDisplay)(void);
+	EGLBoolean (EGLAPIENTRY* eglQueryContext)(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+	EGLBoolean (EGLAPIENTRY* eglWaitGL)(void);
+	EGLBoolean (EGLAPIENTRY* eglWaitNative)(EGLint engine);
+	EGLBoolean (EGLAPIENTRY* eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface);
+	EGLBoolean (EGLAPIENTRY* eglCopyBuffers)(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+	EGLImageKHR (EGLAPIENTRY* eglCreateImageKHR)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
+	EGLBoolean (EGLAPIENTRY* eglDestroyImageKHR)(EGLDisplay dpy, EGLImageKHR image);
+	__eglMustCastToProperFunctionPointerType (EGLAPIENTRY* eglGetProcAddress)(const char*);
+	EGLSyncKHR (EGLAPIENTRY* eglCreateSyncKHR)(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
+	EGLBoolean (EGLAPIENTRY* eglDestroySyncKHR)(EGLDisplay dpy, EGLSyncKHR sync);
+	EGLint (EGLAPIENTRY* eglClientWaitSyncKHR)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+	EGLBoolean (EGLAPIENTRY* eglGetSyncAttribKHR)(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
 
 	// Functions that don't change the error code, for use by client APIs
 	egl::Context *(*clientGetCurrentContext)();
diff --git a/src/OpenGL/libEGL/main.cpp b/src/OpenGL/libEGL/main.cpp
index 5b60037..2db5b5f 100644
--- a/src/OpenGL/libEGL/main.cpp
+++ b/src/OpenGL/libEGL/main.cpp
@@ -350,55 +350,55 @@
 
 namespace egl
 {
-EGLint GetError(void);
-EGLDisplay GetDisplay(EGLNativeDisplayType display_id);
-EGLBoolean Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
-EGLBoolean Terminate(EGLDisplay dpy);
-const char *QueryString(EGLDisplay dpy, EGLint name);
-EGLBoolean GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-EGLBoolean ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-EGLBoolean GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
-EGLSurface CreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list);
-EGLSurface CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
-EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
-EGLBoolean DestroySurface(EGLDisplay dpy, EGLSurface surface);
-EGLBoolean QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
-EGLBoolean BindAPI(EGLenum api);
-EGLenum QueryAPI(void);
-EGLBoolean WaitClient(void);
-EGLBoolean ReleaseThread(void);
-EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
-EGLBoolean SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
-EGLBoolean BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLBoolean ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLBoolean SwapInterval(EGLDisplay dpy, EGLint interval);
-EGLContext CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
-EGLBoolean DestroyContext(EGLDisplay dpy, EGLContext ctx);
-EGLBoolean MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
-EGLContext GetCurrentContext(void);
-EGLSurface GetCurrentSurface(EGLint readdraw);
-EGLDisplay GetCurrentDisplay(void);
-EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
-EGLBoolean WaitGL(void);
-EGLBoolean WaitNative(EGLint engine);
-EGLBoolean SwapBuffers(EGLDisplay dpy, EGLSurface surface);
-EGLBoolean CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
-EGLImageKHR CreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-EGLImageKHR CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
-EGLBoolean DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image);
-EGLDisplay GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list);
-EGLDisplay GetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
-EGLSurface CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
-EGLSurface CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
-EGLSurface CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
-EGLSurface CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
-EGLSyncKHR CreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-EGLSyncKHR CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
-EGLBoolean DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
-EGLint ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-EGLBoolean GetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-EGLBoolean GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value);
-__eglMustCastToProperFunctionPointerType GetProcAddress(const char *procname);
+EGLint EGLAPIENTRY GetError(void);
+EGLDisplay EGLAPIENTRY GetDisplay(EGLNativeDisplayType display_id);
+EGLBoolean EGLAPIENTRY Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
+EGLBoolean EGLAPIENTRY Terminate(EGLDisplay dpy);
+const char *EGLAPIENTRY QueryString(EGLDisplay dpy, EGLint name);
+EGLBoolean EGLAPIENTRY GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+EGLBoolean EGLAPIENTRY ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
+EGLBoolean EGLAPIENTRY GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
+EGLSurface EGLAPIENTRY CreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list);
+EGLSurface EGLAPIENTRY CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
+EGLSurface EGLAPIENTRY CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
+EGLBoolean EGLAPIENTRY DestroySurface(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean EGLAPIENTRY QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
+EGLBoolean EGLAPIENTRY BindAPI(EGLenum api);
+EGLenum EGLAPIENTRY QueryAPI(void);
+EGLBoolean EGLAPIENTRY WaitClient(void);
+EGLBoolean EGLAPIENTRY ReleaseThread(void);
+EGLSurface EGLAPIENTRY CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
+EGLBoolean EGLAPIENTRY SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
+EGLBoolean EGLAPIENTRY BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLBoolean EGLAPIENTRY ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
+EGLBoolean EGLAPIENTRY SwapInterval(EGLDisplay dpy, EGLint interval);
+EGLContext EGLAPIENTRY CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
+EGLBoolean EGLAPIENTRY DestroyContext(EGLDisplay dpy, EGLContext ctx);
+EGLBoolean EGLAPIENTRY MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
+EGLContext EGLAPIENTRY GetCurrentContext(void);
+EGLSurface EGLAPIENTRY GetCurrentSurface(EGLint readdraw);
+EGLDisplay EGLAPIENTRY GetCurrentDisplay(void);
+EGLBoolean EGLAPIENTRY QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
+EGLBoolean EGLAPIENTRY WaitGL(void);
+EGLBoolean EGLAPIENTRY WaitNative(EGLint engine);
+EGLBoolean EGLAPIENTRY SwapBuffers(EGLDisplay dpy, EGLSurface surface);
+EGLBoolean EGLAPIENTRY CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
+EGLImageKHR EGLAPIENTRY CreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
+EGLImageKHR EGLAPIENTRY CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
+EGLBoolean EGLAPIENTRY DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image);
+EGLDisplay EGLAPIENTRY GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list);
+EGLDisplay EGLAPIENTRY GetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
+EGLSurface EGLAPIENTRY CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
+EGLSurface EGLAPIENTRY CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
+EGLSurface EGLAPIENTRY CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
+EGLSurface EGLAPIENTRY CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
+EGLSyncKHR EGLAPIENTRY CreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
+EGLSyncKHR EGLAPIENTRY CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
+EGLBoolean EGLAPIENTRY DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
+EGLint EGLAPIENTRY ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+EGLBoolean EGLAPIENTRY GetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
+EGLBoolean EGLAPIENTRY GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value);
+__eglMustCastToProperFunctionPointerType EGLAPIENTRY GetProcAddress(const char *procname);
 }
 
 extern "C"
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.cpp b/src/OpenGL/libGLES_CM/libGLES_CM.cpp
index 31a2c29..daa61b0 100644
--- a/src/OpenGL/libGLES_CM/libGLES_CM.cpp
+++ b/src/OpenGL/libGLES_CM/libGLES_CM.cpp
@@ -48,7 +48,7 @@
 	return true;
 }
 
-void ActiveTexture(GLenum texture)
+void GL_APIENTRY ActiveTexture(GLenum texture)
 {
 	TRACE("(GLenum texture = 0x%X)", texture);
 
@@ -65,7 +65,7 @@
 	}
 }
 
-void AlphaFunc(GLenum func, GLclampf ref)
+void GL_APIENTRY AlphaFunc(GLenum func, GLclampf ref)
 {
 	TRACE("(GLenum func = 0x%X, GLclampf ref = %f)", func, ref);
 
@@ -92,12 +92,12 @@
 	}
 }
 
-void AlphaFuncx(GLenum func, GLclampx ref)
+void GL_APIENTRY AlphaFuncx(GLenum func, GLclampx ref)
 {
 	AlphaFunc(func, (float)ref / 0x10000);
 }
 
-void BindBuffer(GLenum target, GLuint buffer)
+void GL_APIENTRY BindBuffer(GLenum target, GLuint buffer)
 {
 	TRACE("(GLenum target = 0x%X, GLuint buffer = %d)", target, buffer);
 
@@ -119,7 +119,7 @@
 	}
 }
 
-void BindFramebuffer(GLenum target, GLuint framebuffer)
+void GL_APIENTRY BindFramebuffer(GLenum target, GLuint framebuffer)
 {
 	TRACE("(GLenum target = 0x%X, GLuint framebuffer = %d)", target, framebuffer);
 
@@ -136,7 +136,7 @@
 	}
 }
 
-void BindFramebufferOES(GLenum target, GLuint framebuffer)
+void GL_APIENTRY BindFramebufferOES(GLenum target, GLuint framebuffer)
 {
 	TRACE("(GLenum target = 0x%X, GLuint framebuffer = %d)", target, framebuffer);
 
@@ -153,7 +153,7 @@
 	}
 }
 
-void BindRenderbufferOES(GLenum target, GLuint renderbuffer)
+void GL_APIENTRY BindRenderbufferOES(GLenum target, GLuint renderbuffer)
 {
 	TRACE("(GLenum target = 0x%X, GLuint renderbuffer = %d)", target, renderbuffer);
 
@@ -173,7 +173,7 @@
 	}
 }
 
-void BindTexture(GLenum target, GLuint texture)
+void GL_APIENTRY BindTexture(GLenum target, GLuint texture)
 {
 	TRACE("(GLenum target = 0x%X, GLuint texture = %d)", target, texture);
 
@@ -202,14 +202,14 @@
 	}
 }
 
-void BlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha);
+void GL_APIENTRY BlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha);
 
-void BlendEquationOES(GLenum mode)
+void GL_APIENTRY BlendEquationOES(GLenum mode)
 {
 	BlendEquationSeparateOES(mode, mode);
 }
 
-void BlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha)
+void GL_APIENTRY BlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha)
 {
 	TRACE("(GLenum modeRGB = 0x%X, GLenum modeAlpha = 0x%X)", modeRGB, modeAlpha);
 
@@ -245,14 +245,14 @@
 	}
 }
 
-void BlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+void GL_APIENTRY BlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
 
-void BlendFunc(GLenum sfactor, GLenum dfactor)
+void GL_APIENTRY BlendFunc(GLenum sfactor, GLenum dfactor)
 {
 	BlendFuncSeparateOES(sfactor, dfactor, sfactor, dfactor);
 }
 
-void BlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+void GL_APIENTRY BlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
 {
 	TRACE("(GLenum srcRGB = 0x%X, GLenum dstRGB = 0x%X, GLenum srcAlpha = 0x%X, GLenum dstAlpha = 0x%X)",
 		  srcRGB, dstRGB, srcAlpha, dstAlpha);
@@ -335,7 +335,7 @@
 	}
 }
 
-void BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+void GL_APIENTRY BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
 {
 	size = static_cast<GLint>(size);   // Work around issues with some 64-bit applications
 
@@ -383,7 +383,7 @@
 	}
 }
 
-void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
+void GL_APIENTRY BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
 {
 	size = static_cast<GLint>(size);   // Work around issues with some 64-bit applications
 	offset = static_cast<GLint>(offset);
@@ -433,7 +433,7 @@
 	}
 }
 
-GLenum CheckFramebufferStatusOES(GLenum target)
+GLenum GL_APIENTRY CheckFramebufferStatusOES(GLenum target)
 {
 	TRACE("(GLenum target = 0x%X)", target);
 
@@ -459,7 +459,7 @@
 	return 0;
 }
 
-void Clear(GLbitfield mask)
+void GL_APIENTRY Clear(GLbitfield mask)
 {
 	TRACE("(GLbitfield mask = %X)", mask);
 
@@ -476,7 +476,7 @@
 	}
 }
 
-void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+void GL_APIENTRY ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
 {
 	TRACE("(GLclampf red = %f, GLclampf green = %f, GLclampf blue = %f, GLclampf alpha = %f)",
 	      red, green, blue, alpha);
@@ -489,12 +489,12 @@
 	}
 }
 
-void ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+void GL_APIENTRY ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
 {
 	ClearColor((float)red / 0x10000, (float)green / 0x10000, (float)blue / 0x10000, (float)alpha / 0x10000);
 }
 
-void ClearDepthf(GLclampf depth)
+void GL_APIENTRY ClearDepthf(GLclampf depth)
 {
 	TRACE("(GLclampf depth = %f)", depth);
 
@@ -506,12 +506,12 @@
 	}
 }
 
-void ClearDepthx(GLclampx depth)
+void GL_APIENTRY ClearDepthx(GLclampx depth)
 {
 	ClearDepthf((float)depth / 0x10000);
 }
 
-void ClearStencil(GLint s)
+void GL_APIENTRY ClearStencil(GLint s)
 {
 	TRACE("(GLint s = %d)", s);
 
@@ -523,7 +523,7 @@
 	}
 }
 
-void ClientActiveTexture(GLenum texture)
+void GL_APIENTRY ClientActiveTexture(GLenum texture)
 {
 	TRACE("(GLenum texture = 0x%X)", texture);
 
@@ -544,7 +544,7 @@
 	}
 }
 
-void ClipPlanef(GLenum plane, const GLfloat *equation)
+void GL_APIENTRY ClipPlanef(GLenum plane, const GLfloat *equation)
 {
 	TRACE("(GLenum plane = 0x%X, const GLfloat *equation)", plane);
 
@@ -563,7 +563,7 @@
 	}
 }
 
-void ClipPlanex(GLenum plane, const GLfixed *equation)
+void GL_APIENTRY ClipPlanex(GLenum plane, const GLfixed *equation)
 {
 	GLfloat equationf[4] =
 	{
@@ -576,7 +576,7 @@
 	ClipPlanef(plane, equationf);
 }
 
-void Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
+void GL_APIENTRY Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
 {
 	TRACE("(GLfloat red = %f, GLfloat green = %f, GLfloat blue = %f, GLfloat alpha = %f)", red, green, blue, alpha);
 
@@ -588,17 +588,17 @@
 	}
 }
 
-void Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
+void GL_APIENTRY Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
 {
 	Color4f((float)red / 0xFF, (float)green / 0xFF, (float)blue / 0xFF, (float)alpha / 0xFF);
 }
 
-void Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+void GL_APIENTRY Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
 {
 	Color4f((float)red / 0x10000, (float)green / 0x10000, (float)blue / 0x10000, (float)alpha / 0x10000);
 }
 
-void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+void GL_APIENTRY ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
 {
 	TRACE("(GLboolean red = %d, GLboolean green = %d, GLboolean blue = %d, GLboolean alpha = %d)",
 	      red, green, blue, alpha);
@@ -611,7 +611,7 @@
 	}
 }
 
-void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
+void GL_APIENTRY VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
 {
 	TRACE("(GLuint index = %d, GLint size = %d, GLenum type = 0x%X, "
 	      "GLboolean normalized = %d, GLsizei stride = %d, const GLvoid* ptr = %p)",
@@ -653,7 +653,7 @@
 	}
 }
 
-void ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+void GL_APIENTRY ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
 {
 	TRACE("(GLint size = %d, GLenum type = 0x%X, GLsizei stride = %d, const GLvoid *pointer = %p)", size, type, stride, pointer);
 
@@ -665,8 +665,8 @@
 	VertexAttribPointer(sw::Color0, size, type, true, stride, pointer);
 }
 
-void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
-                          GLint border, GLsizei imageSize, const GLvoid* data)
+void GL_APIENTRY CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
+                                      GLint border, GLsizei imageSize, const GLvoid* data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = %d, "
 	      "GLsizei height = %d, GLint border = %d, GLsizei imageSize = %d, const GLvoid* data = %p)",
@@ -738,8 +738,8 @@
 	}
 }
 
-void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-                             GLenum format, GLsizei imageSize, const GLvoid* data)
+void GL_APIENTRY CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+                                         GLenum format, GLsizei imageSize, const GLvoid* data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLsizei width = %d, GLsizei height = %d, GLenum format = 0x%X, "
@@ -807,7 +807,7 @@
 	}
 }
 
-void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+void GL_APIENTRY CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, "
 	      "GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, GLint border = %d)",
@@ -934,7 +934,7 @@
 	}
 }
 
-void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)",
@@ -1001,7 +1001,7 @@
 	}
 }
 
-void CullFace(GLenum mode)
+void GL_APIENTRY CullFace(GLenum mode)
 {
 	TRACE("(GLenum mode = 0x%X)", mode);
 
@@ -1024,7 +1024,7 @@
 	}
 }
 
-void DeleteBuffers(GLsizei n, const GLuint* buffers)
+void GL_APIENTRY DeleteBuffers(GLsizei n, const GLuint* buffers)
 {
 	TRACE("(GLsizei n = %d, const GLuint* buffers = %p)", n, buffers);
 
@@ -1044,7 +1044,7 @@
 	}
 }
 
-void DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers)
+void GL_APIENTRY DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers)
 {
 	TRACE("(GLsizei n = %d, const GLuint* framebuffers = %p)", n, framebuffers);
 
@@ -1067,7 +1067,7 @@
 	}
 }
 
-void DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers)
+void GL_APIENTRY DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers)
 {
 	TRACE("(GLsizei n = %d, const GLuint* renderbuffers = %p)", n, renderbuffers);
 
@@ -1087,7 +1087,7 @@
 	}
 }
 
-void DeleteTextures(GLsizei n, const GLuint* textures)
+void GL_APIENTRY DeleteTextures(GLsizei n, const GLuint* textures)
 {
 	TRACE("(GLsizei n = %d, const GLuint* textures = %p)", n, textures);
 
@@ -1110,7 +1110,7 @@
 	}
 }
 
-void DepthFunc(GLenum func)
+void GL_APIENTRY DepthFunc(GLenum func)
 {
 	TRACE("(GLenum func = 0x%X)", func);
 
@@ -1137,7 +1137,7 @@
 	}
 }
 
-void DepthMask(GLboolean flag)
+void GL_APIENTRY DepthMask(GLboolean flag)
 {
 	TRACE("(GLboolean flag = %d)", flag);
 
@@ -1149,7 +1149,7 @@
 	}
 }
 
-void DepthRangef(GLclampf zNear, GLclampf zFar)
+void GL_APIENTRY DepthRangef(GLclampf zNear, GLclampf zFar)
 {
 	TRACE("(GLclampf zNear = %f, GLclampf zFar = %f)", zNear, zFar);
 
@@ -1161,12 +1161,12 @@
 	}
 }
 
-void DepthRangex(GLclampx zNear, GLclampx zFar)
+void GL_APIENTRY DepthRangex(GLclampx zNear, GLclampx zFar)
 {
 	DepthRangef((float)zNear / 0x10000, (float)zFar / 0x10000);
 }
 
-void Disable(GLenum cap)
+void GL_APIENTRY Disable(GLenum cap)
 {
 	TRACE("(GLenum cap = 0x%X)", cap);
 
@@ -1224,7 +1224,7 @@
 	}
 }
 
-void DisableClientState(GLenum array)
+void GL_APIENTRY DisableClientState(GLenum array)
 {
 	TRACE("(GLenum array = 0x%X)", array);
 
@@ -1258,7 +1258,7 @@
 	}
 }
 
-void DrawArrays(GLenum mode, GLint first, GLsizei count)
+void GL_APIENTRY DrawArrays(GLenum mode, GLint first, GLsizei count)
 {
 	TRACE("(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d)", mode, first, count);
 
@@ -1275,7 +1275,7 @@
 	}
 }
 
-void DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
+void GL_APIENTRY DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
 {
 	TRACE("(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const GLvoid* indices = %p)",
 	      mode, count, type, indices);
@@ -1303,7 +1303,7 @@
 	}
 }
 
-void Enable(GLenum cap)
+void GL_APIENTRY Enable(GLenum cap)
 {
 	TRACE("(GLenum cap = 0x%X)", cap);
 
@@ -1361,7 +1361,7 @@
 	}
 }
 
-void EnableClientState(GLenum array)
+void GL_APIENTRY EnableClientState(GLenum array)
 {
 	TRACE("(GLenum array = 0x%X)", array);
 
@@ -1395,7 +1395,7 @@
 	}
 }
 
-void Finish(void)
+void GL_APIENTRY Finish(void)
 {
 	TRACE("()");
 
@@ -1407,7 +1407,7 @@
 	}
 }
 
-void Flush(void)
+void GL_APIENTRY Flush(void)
 {
 	TRACE("()");
 
@@ -1419,7 +1419,7 @@
 	}
 }
 
-void FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+void GL_APIENTRY FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
 {
 	TRACE("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum renderbuffertarget = 0x%X, "
 	      "GLuint renderbuffer = %d)", target, attachment, renderbuffertarget, renderbuffer);
@@ -1458,7 +1458,7 @@
 	}
 }
 
-void FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+void GL_APIENTRY FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
 {
 	TRACE("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum textarget = 0x%X, "
 	      "GLuint texture = %d, GLint level = %d)", target, attachment, textarget, texture, level);
@@ -1535,7 +1535,7 @@
 	}
 }
 
-void Fogf(GLenum pname, GLfloat param)
+void GL_APIENTRY Fogf(GLenum pname, GLfloat param)
 {
 	TRACE("(GLenum pname = 0x%X, GLfloat param = %f)", pname, param);
 
@@ -1578,7 +1578,7 @@
 	}
 }
 
-void Fogfv(GLenum pname, const GLfloat *params)
+void GL_APIENTRY Fogfv(GLenum pname, const GLfloat *params)
 {
 	TRACE("(GLenum pname = 0x%X, const GLfloat *params)", pname);
 
@@ -1622,7 +1622,7 @@
 	}
 }
 
-void Fogx(GLenum pname, GLfixed param)
+void GL_APIENTRY Fogx(GLenum pname, GLfixed param)
 {
 	TRACE("(GLenum pname = 0x%X, GLfixed param = %d)", pname, param);
 
@@ -1665,12 +1665,12 @@
 	}
 }
 
-void Fogxv(GLenum pname, const GLfixed *params)
+void GL_APIENTRY Fogxv(GLenum pname, const GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void FrontFace(GLenum mode)
+void GL_APIENTRY FrontFace(GLenum mode)
 {
 	TRACE("(GLenum mode = 0x%X)", mode);
 
@@ -1692,7 +1692,7 @@
 	}
 }
 
-void Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+void GL_APIENTRY Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
 {
 	TRACE("(GLfloat left = %f, GLfloat right = %f, GLfloat bottom = %f, GLfloat top = %f, GLfloat zNear = %f, GLfloat zFar = %f)", left, right, bottom, top, zNear, zFar);
 
@@ -1709,12 +1709,12 @@
 	}
 }
 
-void Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+void GL_APIENTRY Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
 {
 	Frustumf((float)left / 0x10000, (float)right / 0x10000, (float)bottom / 0x10000, (float)top / 0x10000, (float)zNear / 0x10000, (float)zFar / 0x10000);
 }
 
-void GenerateMipmapOES(GLenum target)
+void GL_APIENTRY GenerateMipmapOES(GLenum target)
 {
 	TRACE("(GLenum target = 0x%X)", target);
 
@@ -1742,7 +1742,7 @@
 	}
 }
 
-void GenBuffers(GLsizei n, GLuint* buffers)
+void GL_APIENTRY GenBuffers(GLsizei n, GLuint* buffers)
 {
 	TRACE("(GLsizei n = %d, GLuint* buffers = %p)", n, buffers);
 
@@ -1762,7 +1762,7 @@
 	}
 }
 
-void GenFramebuffersOES(GLsizei n, GLuint* framebuffers)
+void GL_APIENTRY GenFramebuffersOES(GLsizei n, GLuint* framebuffers)
 {
 	TRACE("(GLsizei n = %d, GLuint* framebuffers = %p)", n, framebuffers);
 
@@ -1782,7 +1782,7 @@
 	}
 }
 
-void GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers)
+void GL_APIENTRY GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers)
 {
 	TRACE("(GLsizei n = %d, GLuint* renderbuffers = %p)", n, renderbuffers);
 
@@ -1802,7 +1802,7 @@
 	}
 }
 
-void GenTextures(GLsizei n, GLuint* textures)
+void GL_APIENTRY GenTextures(GLsizei n, GLuint* textures)
 {
 	TRACE("(GLsizei n = %d, GLuint* textures =  %p)", n, textures);
 
@@ -1822,7 +1822,7 @@
 	}
 }
 
-void GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params)
+void GL_APIENTRY GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = %p)", target, pname, params);
 
@@ -1864,7 +1864,7 @@
 	}
 }
 
-void GetBooleanv(GLenum pname, GLboolean* params)
+void GL_APIENTRY GetBooleanv(GLenum pname, GLboolean* params)
 {
 	TRACE("(GLenum pname = 0x%X, GLboolean* params = %p)",  pname, params);
 
@@ -1925,7 +1925,7 @@
 	}
 }
 
-void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
+void GL_APIENTRY GetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = %p)", target, pname, params);
 
@@ -1967,17 +1967,17 @@
 	}
 }
 
-void GetClipPlanef(GLenum pname, GLfloat eqn[4])
+void GL_APIENTRY GetClipPlanef(GLenum pname, GLfloat eqn[4])
 {
 	UNIMPLEMENTED();
 }
 
-void GetClipPlanex(GLenum pname, GLfixed eqn[4])
+void GL_APIENTRY GetClipPlanex(GLenum pname, GLfixed eqn[4])
 {
 	UNIMPLEMENTED();
 }
 
-GLenum GetError(void)
+GLenum GL_APIENTRY GetError(void)
 {
 	TRACE("()");
 
@@ -1991,12 +1991,12 @@
 	return GL_NO_ERROR;
 }
 
-void GetFixedv(GLenum pname, GLfixed *params)
+void GL_APIENTRY GetFixedv(GLenum pname, GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void GetFloatv(GLenum pname, GLfloat* params)
+void GL_APIENTRY GetFloatv(GLenum pname, GLfloat* params)
 {
 	TRACE("(GLenum pname = 0x%X, GLfloat* params = %p)", pname, params);
 
@@ -2054,7 +2054,7 @@
 	}
 }
 
-void GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params)
+void GL_APIENTRY GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum pname = 0x%X, GLint* params = %p)",
 	      target, attachment, pname, params);
@@ -2146,7 +2146,7 @@
 	}
 }
 
-void GetIntegerv(GLenum pname, GLint* params)
+void GL_APIENTRY GetIntegerv(GLenum pname, GLint* params)
 {
 	TRACE("(GLenum pname = 0x%X, GLint* params = %p)", pname, params);
 
@@ -2211,27 +2211,27 @@
 	}
 }
 
-void GetLightfv(GLenum light, GLenum pname, GLfloat *params)
+void GL_APIENTRY GetLightfv(GLenum light, GLenum pname, GLfloat *params)
 {
 	UNIMPLEMENTED();
 }
 
-void GetLightxv(GLenum light, GLenum pname, GLfixed *params)
+void GL_APIENTRY GetLightxv(GLenum light, GLenum pname, GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void GetMaterialfv(GLenum face, GLenum pname, GLfloat *params)
+void GL_APIENTRY GetMaterialfv(GLenum face, GLenum pname, GLfloat *params)
 {
 	UNIMPLEMENTED();
 }
 
-void GetMaterialxv(GLenum face, GLenum pname, GLfixed *params)
+void GL_APIENTRY GetMaterialxv(GLenum face, GLenum pname, GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void GetPointerv(GLenum pname, GLvoid **params)
+void GL_APIENTRY GetPointerv(GLenum pname, GLvoid **params)
 {
 	TRACE("(GLenum pname = 0x%X, GLvoid **params = %p)", pname, params);
 
@@ -2246,7 +2246,7 @@
 	}
 }
 
-const GLubyte* GetString(GLenum name)
+const GLubyte* GL_APIENTRY GetString(GLenum name)
 {
 	TRACE("(GLenum name = 0x%X)", name);
 
@@ -2294,7 +2294,7 @@
 	}
 }
 
-void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
+void GL_APIENTRY GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLfloat* params = %p)", target, pname, params);
 
@@ -2345,7 +2345,7 @@
 	}
 }
 
-void GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
+void GL_APIENTRY GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = %p)", target, pname, params);
 
@@ -2396,27 +2396,27 @@
 	}
 }
 
-void GetTexEnvfv(GLenum env, GLenum pname, GLfloat *params)
+void GL_APIENTRY GetTexEnvfv(GLenum env, GLenum pname, GLfloat *params)
 {
 	UNIMPLEMENTED();
 }
 
-void GetTexEnviv(GLenum env, GLenum pname, GLint *params)
+void GL_APIENTRY GetTexEnviv(GLenum env, GLenum pname, GLint *params)
 {
 	UNIMPLEMENTED();
 }
 
-void GetTexEnvxv(GLenum env, GLenum pname, GLfixed *params)
+void GL_APIENTRY GetTexEnvxv(GLenum env, GLenum pname, GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params)
+void GL_APIENTRY GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void Hint(GLenum target, GLenum mode)
+void GL_APIENTRY Hint(GLenum target, GLenum mode)
 {
 	TRACE("(GLenum target = 0x%X, GLenum mode = 0x%X)", target, mode);
 
@@ -2451,7 +2451,7 @@
 	}
 }
 
-GLboolean IsBuffer(GLuint buffer)
+GLboolean GL_APIENTRY IsBuffer(GLuint buffer)
 {
 	TRACE("(GLuint buffer = %d)", buffer);
 
@@ -2470,7 +2470,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsEnabled(GLenum cap)
+GLboolean GL_APIENTRY IsEnabled(GLenum cap)
 {
 	TRACE("(GLenum cap = 0x%X)", cap);
 
@@ -2530,7 +2530,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsFramebufferOES(GLuint framebuffer)
+GLboolean GL_APIENTRY IsFramebufferOES(GLuint framebuffer)
 {
 	TRACE("(GLuint framebuffer = %d)", framebuffer);
 
@@ -2549,7 +2549,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsTexture(GLuint texture)
+GLboolean GL_APIENTRY IsTexture(GLuint texture)
 {
 	TRACE("(GLuint texture = %d)", texture);
 
@@ -2568,7 +2568,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsRenderbufferOES(GLuint renderbuffer)
+GLboolean GL_APIENTRY IsRenderbufferOES(GLuint renderbuffer)
 {
 	TRACE("(GLuint renderbuffer = %d)", renderbuffer);
 
@@ -2587,7 +2587,7 @@
 	return GL_FALSE;
 }
 
-void LightModelf(GLenum pname, GLfloat param)
+void GL_APIENTRY LightModelf(GLenum pname, GLfloat param)
 {
 	TRACE("(GLenum pname = 0x%X, GLfloat param = %f)", pname, param);
 
@@ -2608,7 +2608,7 @@
 	}
 }
 
-void LightModelfv(GLenum pname, const GLfloat *params)
+void GL_APIENTRY LightModelfv(GLenum pname, const GLfloat *params)
 {
 	TRACE("(GLenum pname = 0x%X, const GLfloat *params)", pname);
 
@@ -2630,7 +2630,7 @@
 	}
 }
 
-void LightModelx(GLenum pname, GLfixed param)
+void GL_APIENTRY LightModelx(GLenum pname, GLfixed param)
 {
 	TRACE("(GLenum pname = 0x%X, GLfixed param = %d)", pname, param);
 
@@ -2651,7 +2651,7 @@
 	}
 }
 
-void LightModelxv(GLenum pname, const GLfixed *params)
+void GL_APIENTRY LightModelxv(GLenum pname, const GLfixed *params)
 {
 	TRACE("(GLenum pname = 0x%X, const GLfixed *params)", pname);
 
@@ -2673,7 +2673,7 @@
 	}
 }
 
-void Lightf(GLenum light, GLenum pname, GLfloat param)
+void GL_APIENTRY Lightf(GLenum light, GLenum pname, GLfloat param)
 {
 	TRACE("(GLenum light = 0x%X, GLenum pname = 0x%X, GLfloat param = %f)", light, pname, param);
 
@@ -2737,7 +2737,7 @@
 	}
 }
 
-void Lightfv(GLenum light, GLenum pname, const GLfloat *params)
+void GL_APIENTRY Lightfv(GLenum light, GLenum pname, const GLfloat *params)
 {
 	TRACE("(GLenum light = 0x%X, GLenum pname = 0x%X, const GLint *params)", light, pname);
 
@@ -2800,17 +2800,17 @@
 	}
 }
 
-void Lightx(GLenum light, GLenum pname, GLfixed param)
+void GL_APIENTRY Lightx(GLenum light, GLenum pname, GLfixed param)
 {
 	UNIMPLEMENTED();
 }
 
-void Lightxv(GLenum light, GLenum pname, const GLfixed *params)
+void GL_APIENTRY Lightxv(GLenum light, GLenum pname, const GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void LineWidth(GLfloat width)
+void GL_APIENTRY LineWidth(GLfloat width)
 {
 	TRACE("(GLfloat width = %f)", width);
 
@@ -2827,12 +2827,12 @@
 	}
 }
 
-void LineWidthx(GLfixed width)
+void GL_APIENTRY LineWidthx(GLfixed width)
 {
 	LineWidth((float)width / 0x10000);
 }
 
-void LoadIdentity(void)
+void GL_APIENTRY LoadIdentity(void)
 {
 	TRACE("()");
 
@@ -2844,7 +2844,7 @@
 	}
 }
 
-void LoadMatrixf(const GLfloat *m)
+void GL_APIENTRY LoadMatrixf(const GLfloat *m)
 {
 	TRACE("(const GLfloat *m)");
 
@@ -2856,7 +2856,7 @@
 	}
 }
 
-void LoadMatrixx(const GLfixed *m)
+void GL_APIENTRY LoadMatrixx(const GLfixed *m)
 {
 	GLfloat matrix[16] =
 	{
@@ -2869,7 +2869,7 @@
 	LoadMatrixf(matrix);
 }
 
-void LogicOp(GLenum opcode)
+void GL_APIENTRY LogicOp(GLenum opcode)
 {
 	TRACE("(GLenum opcode = 0x%X)", opcode);
 
@@ -2904,7 +2904,7 @@
 	}
 }
 
-void Materialf(GLenum face, GLenum pname, GLfloat param)
+void GL_APIENTRY Materialf(GLenum face, GLenum pname, GLfloat param)
 {
 	TRACE("(GLenum face = 0x%X, GLenum pname = 0x%X, GLfloat param = %f)", face, pname, param);
 
@@ -2938,7 +2938,7 @@
 	}
 }
 
-void Materialfv(GLenum face, GLenum pname, const GLfloat *params)
+void GL_APIENTRY Materialfv(GLenum face, GLenum pname, const GLfloat *params)
 {
 	TRACE("(GLenum face = 0x%X, GLenum pname = 0x%X, GLfloat params)", face, pname);
 
@@ -2978,17 +2978,17 @@
 	}
 }
 
-void Materialx(GLenum face, GLenum pname, GLfixed param)
+void GL_APIENTRY Materialx(GLenum face, GLenum pname, GLfixed param)
 {
 	UNIMPLEMENTED();
 }
 
-void Materialxv(GLenum face, GLenum pname, const GLfixed *params)
+void GL_APIENTRY Materialxv(GLenum face, GLenum pname, const GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void MatrixMode(GLenum mode)
+void GL_APIENTRY MatrixMode(GLenum mode)
 {
 	TRACE("(GLenum mode = 0x%X)", mode);
 
@@ -3000,7 +3000,7 @@
 	}
 }
 
-void MultMatrixf(const GLfloat *m)
+void GL_APIENTRY MultMatrixf(const GLfloat *m)
 {
 	TRACE("(const GLfloat *m)");
 
@@ -3012,7 +3012,7 @@
 	}
 }
 
-void MultMatrixx(const GLfixed *m)
+void GL_APIENTRY MultMatrixx(const GLfixed *m)
 {
 	GLfloat matrix[16] =
 	{
@@ -3025,7 +3025,7 @@
 	MultMatrixf(matrix);
 }
 
-void MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+void GL_APIENTRY MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
 {
 	TRACE("(GLenum target = 0x%X, GLfloat s = %f, GLfloat t = %f, GLfloat r = %f, GLfloat q = %f)", target, s, t, r, q);
 
@@ -3046,12 +3046,12 @@
 	}
 }
 
-void MultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+void GL_APIENTRY MultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
 {
 	UNIMPLEMENTED();
 }
 
-void Normal3f(GLfloat nx, GLfloat ny, GLfloat nz)
+void GL_APIENTRY Normal3f(GLfloat nx, GLfloat ny, GLfloat nz)
 {
 	TRACE("(GLfloat nx, GLfloat ny, GLfloat nz)", nx, ny, nz);
 
@@ -3063,19 +3063,19 @@
 	}
 }
 
-void Normal3x(GLfixed nx, GLfixed ny, GLfixed nz)
+void GL_APIENTRY Normal3x(GLfixed nx, GLfixed ny, GLfixed nz)
 {
 	UNIMPLEMENTED();
 }
 
-void NormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer)
+void GL_APIENTRY NormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer)
 {
 	TRACE("(GLenum type = 0x%X, GLsizei stride = %d, const GLvoid *pointer = %p)", type, stride, pointer);
 
 	VertexAttribPointer(sw::Normal, 3, type, true, stride, pointer);
 }
 
-void Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+void GL_APIENTRY Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
 {
 	TRACE("(GLfloat left = %f, GLfloat right = %f, GLfloat bottom = %f, GLfloat top = %f, GLfloat zNear = %f, GLfloat zFar = %f)", left, right, bottom, top, zNear, zFar);
 
@@ -3092,12 +3092,12 @@
 	}
 }
 
-void Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+void GL_APIENTRY Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
 {
 	Orthof((float)left / 0x10000, (float)right / 0x10000, (float)bottom / 0x10000, (float)top / 0x10000, (float)zNear / 0x10000, (float)zFar / 0x10000);
 }
 
-void PixelStorei(GLenum pname, GLint param)
+void GL_APIENTRY PixelStorei(GLenum pname, GLint param)
 {
 	TRACE("(GLenum pname = 0x%X, GLint param = %d)", pname, param);
 
@@ -3129,7 +3129,7 @@
 	}
 }
 
-void PointParameterf(GLenum pname, GLfloat param)
+void GL_APIENTRY PointParameterf(GLenum pname, GLfloat param)
 {
 	TRACE("(GLenum pname = 0x%X, GLfloat param = %f)", pname, param);
 
@@ -3168,7 +3168,7 @@
 	}
 }
 
-void PointParameterfv(GLenum pname, const GLfloat *params)
+void GL_APIENTRY PointParameterfv(GLenum pname, const GLfloat *params)
 {
 	TRACE("(GLenum pname = 0x%X, const GLfloat *params)", pname);
 
@@ -3208,7 +3208,7 @@
 	}
 }
 
-void PointParameterx(GLenum pname, GLfixed param)
+void GL_APIENTRY PointParameterx(GLenum pname, GLfixed param)
 {
 	TRACE("(GLenum pname = 0x%X, GLfixed param = %d)", pname, param);
 
@@ -3247,7 +3247,7 @@
 	}
 }
 
-void PointParameterxv(GLenum pname, const GLfixed *params)
+void GL_APIENTRY PointParameterxv(GLenum pname, const GLfixed *params)
 {
 	TRACE("(GLenum pname = 0x%X, const GLfixed *params)", pname);
 
@@ -3287,7 +3287,7 @@
 	}
 }
 
-void PointSize(GLfloat size)
+void GL_APIENTRY PointSize(GLfloat size)
 {
 	TRACE("(GLfloat size = %f)", size);
 
@@ -3304,7 +3304,7 @@
 	}
 }
 
-void PointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer)
+void GL_APIENTRY PointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer)
 {
 	TRACE("(GLenum type = 0x%X, GLsizei stride = %d, const GLvoid *pointer = %p)", type, stride, pointer);
 
@@ -3320,12 +3320,12 @@
 	VertexAttribPointer(sw::PointSize, 1, type, true, stride, pointer);
 }
 
-void PointSizex(GLfixed size)
+void GL_APIENTRY PointSizex(GLfixed size)
 {
 	PointSize((float)size / 0x10000);
 }
 
-void PolygonOffset(GLfloat factor, GLfloat units)
+void GL_APIENTRY PolygonOffset(GLfloat factor, GLfloat units)
 {
 	TRACE("(GLfloat factor = %f, GLfloat units = %f)", factor, units);
 
@@ -3337,12 +3337,12 @@
 	}
 }
 
-void PolygonOffsetx(GLfixed factor, GLfixed units)
+void GL_APIENTRY PolygonOffsetx(GLfixed factor, GLfixed units)
 {
 	PolygonOffset((float)factor / 0x10000, (float)units / 0x10000);
 }
 
-void PopMatrix(void)
+void GL_APIENTRY PopMatrix(void)
 {
 	TRACE("()");
 
@@ -3354,7 +3354,7 @@
 	}
 }
 
-void PushMatrix(void)
+void GL_APIENTRY PushMatrix(void)
 {
 	TRACE("()");
 
@@ -3366,7 +3366,7 @@
 	}
 }
 
-void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
+void GL_APIENTRY ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
 {
 	TRACE("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, "
 	      "GLenum format = 0x%X, GLenum type = 0x%X, GLvoid* pixels = %p)",
@@ -3385,7 +3385,7 @@
 	}
 }
 
-void RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+void GL_APIENTRY RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
 {
 	TRACE("(GLenum target = 0x%X, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d)",
 	      target, internalformat, width, height);
@@ -3448,7 +3448,7 @@
 	}
 }
 
-void Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
+void GL_APIENTRY Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
 {
 	TRACE("(GLfloat angle = %f, GLfloat x = %f, GLfloat y = %f, GLfloat z = %f)", angle, x, y, z);
 
@@ -3460,12 +3460,12 @@
 	}
 }
 
-void Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+void GL_APIENTRY Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
 {
 	Rotatef((float)angle / 0x10000, (float)x / 0x10000, (float)y / 0x10000, (float)z / 0x10000);
 }
 
-void SampleCoverage(GLclampf value, GLboolean invert)
+void GL_APIENTRY SampleCoverage(GLclampf value, GLboolean invert)
 {
 	TRACE("(GLclampf value = %f, GLboolean invert = %d)", value, invert);
 
@@ -3477,12 +3477,12 @@
 	}
 }
 
-void SampleCoveragex(GLclampx value, GLboolean invert)
+void GL_APIENTRY SampleCoveragex(GLclampx value, GLboolean invert)
 {
 	SampleCoverage((float)value / 0x10000, invert);
 }
 
-void Scalef(GLfloat x, GLfloat y, GLfloat z)
+void GL_APIENTRY Scalef(GLfloat x, GLfloat y, GLfloat z)
 {
 	TRACE("(GLfloat x = %f, GLfloat y = %f, GLfloat z = %f)", x, y, z);
 
@@ -3494,12 +3494,12 @@
 	}
 }
 
-void Scalex(GLfixed x, GLfixed y, GLfixed z)
+void GL_APIENTRY Scalex(GLfixed x, GLfixed y, GLfixed z)
 {
 	Scalef((float)x / 0x10000, (float)y / 0x10000, (float)z / 0x10000);
 }
 
-void Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)", x, y, width, height);
 
@@ -3516,7 +3516,7 @@
 	}
 }
 
-void ShadeModel(GLenum mode)
+void GL_APIENTRY ShadeModel(GLenum mode)
 {
 	switch(mode)
 	{
@@ -3535,7 +3535,7 @@
 	}
 }
 
-void StencilFunc(GLenum func, GLint ref, GLuint mask)
+void GL_APIENTRY StencilFunc(GLenum func, GLint ref, GLuint mask)
 {
 	TRACE("(GLenum func = 0x%X, GLint ref = %d, GLuint mask = %d)",  func, ref, mask);
 
@@ -3562,7 +3562,7 @@
 	}
 }
 
-void StencilMask(GLuint mask)
+void GL_APIENTRY StencilMask(GLuint mask)
 {
 	TRACE("(GLuint mask = %d)", mask);
 
@@ -3574,7 +3574,7 @@
 	}
 }
 
-void StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
+void GL_APIENTRY StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
 {
 	TRACE("(GLenum fail = 0x%X, GLenum zfail = 0x%X, GLenum zpas = 0x%Xs)", fail, zfail, zpass);
 
@@ -3631,7 +3631,7 @@
 	}
 }
 
-void TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+void GL_APIENTRY TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
 {
 	TRACE("(GLint size = %d, GLenum type = 0x%X, GLsizei stride = %d, const GLvoid *pointer = %p)", size, type, stride, pointer);
 
@@ -3649,14 +3649,14 @@
 	}
 }
 
-void TexEnvi(GLenum target, GLenum pname, GLint param);
+void GL_APIENTRY TexEnvi(GLenum target, GLenum pname, GLint param);
 
-void TexEnvf(GLenum target, GLenum pname, GLfloat param)
+void GL_APIENTRY TexEnvf(GLenum target, GLenum pname, GLfloat param)
 {
 	TexEnvi(target, pname, (GLint)param);
 }
 
-void TexEnvfv(GLenum target, GLenum pname, const GLfloat *params)
+void GL_APIENTRY TexEnvfv(GLenum target, GLenum pname, const GLfloat *params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, const GLfloat *params)", target, pname);
 
@@ -3913,7 +3913,7 @@
 	}
 }
 
-void TexEnvi(GLenum target, GLenum pname, GLint param)
+void GL_APIENTRY TexEnvi(GLenum target, GLenum pname, GLint param)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint param = %d)", target, pname, param);
 
@@ -4168,23 +4168,23 @@
 	}
 }
 
-void TexEnvx(GLenum target, GLenum pname, GLfixed param)
+void GL_APIENTRY TexEnvx(GLenum target, GLenum pname, GLfixed param)
 {
 	TexEnvi(target, pname, (GLint)param);
 }
 
-void TexEnviv(GLenum target, GLenum pname, const GLint *params)
+void GL_APIENTRY TexEnviv(GLenum target, GLenum pname, const GLint *params)
 {
 	UNIMPLEMENTED();
 }
 
-void TexEnvxv(GLenum target, GLenum pname, const GLfixed *params)
+void GL_APIENTRY TexEnvxv(GLenum target, GLenum pname, const GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
-                GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+void GL_APIENTRY TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+                            GLint border, GLenum format, GLenum type, const GLvoid* pixels)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, GLsizei height = %d, "
 	      "GLint border = %d, GLenum format = 0x%X, GLenum type = 0x%X, const GLvoid* pixels =  %p)",
@@ -4299,7 +4299,7 @@
 	}
 }
 
-void TexParameterf(GLenum target, GLenum pname, GLfloat param)
+void GL_APIENTRY TexParameterf(GLenum target, GLenum pname, GLfloat param)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLfloat param = %f)", target, pname, param);
 
@@ -4364,12 +4364,12 @@
 	}
 }
 
-void TexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
+void GL_APIENTRY TexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
 {
 	TexParameterf(target, pname, *params);
 }
 
-void TexParameteri(GLenum target, GLenum pname, GLint param)
+void GL_APIENTRY TexParameteri(GLenum target, GLenum pname, GLint param)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint param = %d)", target, pname, param);
 
@@ -4434,7 +4434,7 @@
 	}
 }
 
-void TexParameteriv(GLenum target, GLenum pname, const GLint* params)
+void GL_APIENTRY TexParameteriv(GLenum target, GLenum pname, const GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint param = %p)", target, pname, params);
 
@@ -4472,18 +4472,18 @@
 	}
 }
 
-void TexParameterx(GLenum target, GLenum pname, GLfixed param)
+void GL_APIENTRY TexParameterx(GLenum target, GLenum pname, GLfixed param)
 {
 	TexParameteri(target, pname, (GLint)param);
 }
 
-void TexParameterxv(GLenum target, GLenum pname, const GLfixed *params)
+void GL_APIENTRY TexParameterxv(GLenum target, GLenum pname, const GLfixed *params)
 {
 	UNIMPLEMENTED();
 }
 
-void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-                   GLenum format, GLenum type, const GLvoid* pixels)
+void GL_APIENTRY TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+                               GLenum format, GLenum type, const GLvoid* pixels)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLsizei width = %d, GLsizei height = %d, GLenum format = 0x%X, GLenum type = 0x%X, "
@@ -4535,7 +4535,7 @@
 	}
 }
 
-void Translatef(GLfloat x, GLfloat y, GLfloat z)
+void GL_APIENTRY Translatef(GLfloat x, GLfloat y, GLfloat z)
 {
 	TRACE("(GLfloat x = %f, GLfloat y = %f, GLfloat z = %f)", x, y, z);
 
@@ -4547,12 +4547,12 @@
 	}
 }
 
-void Translatex(GLfixed x, GLfixed y, GLfixed z)
+void GL_APIENTRY Translatex(GLfixed x, GLfixed y, GLfixed z)
 {
 	Translatef((float)x / 0x10000, (float)y / 0x10000, (float)z / 0x10000);
 }
 
-void VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+void GL_APIENTRY VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
 {
 	TRACE("(GLint size = %d, GLenum type = 0x%X, GLsizei stride = %d, const GLvoid *pointer = %p)", size, type, stride, pointer);
 
@@ -4564,7 +4564,7 @@
 	VertexAttribPointer(sw::Position, size, type, false, stride, pointer);
 }
 
-void Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)", x, y, width, height);
 
@@ -4581,7 +4581,7 @@
 	}
 }
 
-void EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
+void GL_APIENTRY EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
 {
 	TRACE("(GLenum target = 0x%X, GLeglImageOES image = %p)", target, image);
 
@@ -4623,19 +4623,19 @@
 	}
 }
 
-void EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
+void GL_APIENTRY EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
 {
 	TRACE("(GLenum target = 0x%X, GLeglImageOES image = %p)", target, image);
 
 	UNIMPLEMENTED();
 }
 
-void DrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
+void GL_APIENTRY DrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
 {
 	UNIMPLEMENTED();
 }
 
-void DrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height)
+void GL_APIENTRY DrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height)
 {
 	TRACE("(GLint x = %d, GLint y = %d, GLint z = %d, GLint width = %d, GLint height = %d)", x, y, z, width, height);
 
@@ -4652,27 +4652,27 @@
 	}
 }
 
-void DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
+void GL_APIENTRY DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
 {
 	UNIMPLEMENTED();
 }
 
-void DrawTexsvOES(const GLshort *coords)
+void GL_APIENTRY DrawTexsvOES(const GLshort *coords)
 {
 	UNIMPLEMENTED();
 }
 
-void DrawTexivOES(const GLint *coords)
+void GL_APIENTRY DrawTexivOES(const GLint *coords)
 {
 	UNIMPLEMENTED();
 }
 
-void DrawTexxvOES(const GLfixed *coords)
+void GL_APIENTRY DrawTexxvOES(const GLfixed *coords)
 {
 	UNIMPLEMENTED();
 }
 
-void DrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
+void GL_APIENTRY DrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
 {
 	TRACE("(GLfloat x = %f, GLfloat y = %f, GLfloat z = %f, GLfloat width = %f, GLfloat height = %f)", x, y, z, width, height);
 
@@ -4689,7 +4689,7 @@
 	}
 }
 
-void DrawTexfvOES(const GLfloat *coords)
+void GL_APIENTRY DrawTexfvOES(const GLfloat *coords)
 {
 	UNIMPLEMENTED();
 }
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.hpp b/src/OpenGL/libGLES_CM/libGLES_CM.hpp
index 80ce1f2..325578e 100644
--- a/src/OpenGL/libGLES_CM/libGLES_CM.hpp
+++ b/src/OpenGL/libGLES_CM/libGLES_CM.hpp
@@ -40,184 +40,184 @@
 public:
 	LibGLES_CMexports();
 
-	void (*glActiveTexture)(GLenum texture);
-	void (*glAlphaFunc)(GLenum func, GLclampf ref);
-	void (*glAlphaFuncx)(GLenum func, GLclampx ref);
-	void (*glBindBuffer)(GLenum target, GLuint buffer);
-	void (*glBindFramebuffer)(GLenum target, GLuint framebuffer);
-	void (*glBindFramebufferOES)(GLenum target, GLuint framebuffer);
-	void (*glBindRenderbufferOES)(GLenum target, GLuint renderbuffer);
-	void (*glBindTexture)(GLenum target, GLuint texture);
-	void (*glBlendEquationOES)(GLenum mode);
-	void (*glBlendEquationSeparateOES)(GLenum modeRGB, GLenum modeAlpha);
-	void (*glBlendFunc)(GLenum sfactor, GLenum dfactor);
-	void (*glBlendFuncSeparateOES)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-	void (*glBufferData)(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
-	void (*glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
-	GLenum (*glCheckFramebufferStatusOES)(GLenum target);
-	void (*glClear)(GLbitfield mask);
-	void (*glClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-	void (*glClearColorx)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
-	void (*glClearDepthf)(GLclampf depth);
-	void (*glClearDepthx)(GLclampx depth);
-	void (*glClearStencil)(GLint s);
-	void (*glClientActiveTexture)(GLenum texture);
-	void (*glClipPlanef)(GLenum plane, const GLfloat *equation);
-	void (*glClipPlanex)(GLenum plane, const GLfixed *equation);
-	void (*glColor4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-	void (*glColor4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
-	void (*glColor4x)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-	void (*glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-	void (*glColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-	void (*glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
-	                               GLint border, GLsizei imageSize, const GLvoid* data);
-	void (*glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-	                                  GLenum format, GLsizei imageSize, const GLvoid* data);
-	void (*glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-	void (*glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-	void (*glCullFace)(GLenum mode);
-	void (*glDeleteBuffers)(GLsizei n, const GLuint* buffers);
-	void (*glDeleteFramebuffersOES)(GLsizei n, const GLuint* framebuffers);
-	void (*glDeleteRenderbuffersOES)(GLsizei n, const GLuint* renderbuffers);
-	void (*glDeleteTextures)(GLsizei n, const GLuint* textures);
-	void (*glDepthFunc)(GLenum func);
-	void (*glDepthMask)(GLboolean flag);
-	void (*glDepthRangex)(GLclampx zNear, GLclampx zFar);
-	void (*glDepthRangef)(GLclampf zNear, GLclampf zFar);
-	void (*glDisable)(GLenum cap);
-	void (*glDisableClientState)(GLenum array);
-	void (*glDrawArrays)(GLenum mode, GLint first, GLsizei count);
-	void (*glDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
-	void (*glEnable)(GLenum cap);
-	void (*glEnableClientState)(GLenum array);
-	void (*glFinish)(void);
-	void (*glFlush)(void);
-	void (*glFramebufferRenderbufferOES)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-	void (*glFramebufferTexture2DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-	void (*glFogf)(GLenum pname, GLfloat param);
-	void (*glFogfv)(GLenum pname, const GLfloat *params);
-	void (*glFogx)(GLenum pname, GLfixed param);
-	void (*glFogxv)(GLenum pname, const GLfixed *params);
-	void (*glFrontFace)(GLenum mode);
-	void (*glFrustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-	void (*glFrustumx)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-	void (*glGenerateMipmapOES)(GLenum target);
-	void (*glGenBuffers)(GLsizei n, GLuint* buffers);
-	void (*glGenFramebuffersOES)(GLsizei n, GLuint* framebuffers);
-	void (*glGenRenderbuffersOES)(GLsizei n, GLuint* renderbuffers);
-	void (*glGenTextures)(GLsizei n, GLuint* textures);
-	void (*glGetRenderbufferParameterivOES)(GLenum target, GLenum pname, GLint* params);
-	void (*glGetBooleanv)(GLenum pname, GLboolean* params);
-	void (*glGetBufferParameteriv)(GLenum target, GLenum pname, GLint* params);
-	void (*glGetClipPlanef)(GLenum pname, GLfloat eqn[4]);
-	void (*glGetClipPlanex)(GLenum pname, GLfixed eqn[4]);
-	GLenum (*glGetError)(void);
-	void (*glGetFixedv)(GLenum pname, GLfixed *params);
-	void (*glGetFloatv)(GLenum pname, GLfloat* params);
-	void (*glGetFramebufferAttachmentParameterivOES)(GLenum target, GLenum attachment, GLenum pname, GLint* params);
-	void (*glGetIntegerv)(GLenum pname, GLint* params);
-	void (*glGetLightfv)(GLenum light, GLenum pname, GLfloat *params);
-	void (*glGetLightxv)(GLenum light, GLenum pname, GLfixed *params);
-	void (*glGetMaterialfv)(GLenum face, GLenum pname, GLfloat *params);
-	void (*glGetMaterialxv)(GLenum face, GLenum pname, GLfixed *params);
-	void (*glGetPointerv)(GLenum pname, GLvoid **params);
-	const GLubyte* (*glGetString)(GLenum name);
-	void (*glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat* params);
-	void (*glGetTexParameteriv)(GLenum target, GLenum pname, GLint* params);
-	void (*glGetTexEnvfv)(GLenum env, GLenum pname, GLfloat *params);
-	void (*glGetTexEnviv)(GLenum env, GLenum pname, GLint *params);
-	void (*glGetTexEnvxv)(GLenum env, GLenum pname, GLfixed *params);
-	void (*glGetTexParameterxv)(GLenum target, GLenum pname, GLfixed *params);
-	void (*glHint)(GLenum target, GLenum mode);
-	GLboolean (*glIsBuffer)(GLuint buffer);
-	GLboolean (*glIsEnabled)(GLenum cap);
-	GLboolean (*glIsFramebufferOES)(GLuint framebuffer);
-	GLboolean (*glIsTexture)(GLuint texture);
-	GLboolean (*glIsRenderbufferOES)(GLuint renderbuffer);
-	void (*glLightModelf)(GLenum pname, GLfloat param);
-	void (*glLightModelfv)(GLenum pname, const GLfloat *params);
-	void (*glLightModelx)(GLenum pname, GLfixed param);
-	void (*glLightModelxv)(GLenum pname, const GLfixed *params);
-	void (*glLightf)(GLenum light, GLenum pname, GLfloat param);
-	void (*glLightfv)(GLenum light, GLenum pname, const GLfloat *params);
-	void (*glLightx)(GLenum light, GLenum pname, GLfixed param);
-	void (*glLightxv)(GLenum light, GLenum pname, const GLfixed *params);
-	void (*glLineWidth)(GLfloat width);
-	void (*glLineWidthx)(GLfixed width);
-	void (*glLoadIdentity)(void);
-	void (*glLoadMatrixf)(const GLfloat *m);
-	void (*glLoadMatrixx)(const GLfixed *m);
-	void (*glLogicOp)(GLenum opcode);
-	void (*glMaterialf)(GLenum face, GLenum pname, GLfloat param);
-	void (*glMaterialfv)(GLenum face, GLenum pname, const GLfloat *params);
-	void (*glMaterialx)(GLenum face, GLenum pname, GLfixed param);
-	void (*glMaterialxv)(GLenum face, GLenum pname, const GLfixed *params);
-	void (*glMatrixMode)(GLenum mode);
-	void (*glMultMatrixf)(const GLfloat *m);
-	void (*glMultMatrixx)(const GLfixed *m);
-	void (*glMultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-	void (*glMultiTexCoord4x)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-	void (*glNormal3f)(GLfloat nx, GLfloat ny, GLfloat nz);
-	void (*glNormal3x)(GLfixed nx, GLfixed ny, GLfixed nz);
-	void (*glNormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer);
-	void (*glOrthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-	void (*glOrthox)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-	void (*glPixelStorei)(GLenum pname, GLint param);
-	void (*glPointParameterf)(GLenum pname, GLfloat param);
-	void (*glPointParameterfv)(GLenum pname, const GLfloat *params);
-	void (*glPointParameterx)(GLenum pname, GLfixed param);
-	void (*glPointParameterxv)(GLenum pname, const GLfixed *params);
-	void (*glPointSize)(GLfloat size);
-	void (*glPointSizePointerOES)(GLenum type, GLsizei stride, const GLvoid *pointer);
-	void (*glPointSizex)(GLfixed size);
-	void (*glPolygonOffset)(GLfloat factor, GLfloat units);
-	void (*glPolygonOffsetx)(GLfixed factor, GLfixed units);
-	void (*glPopMatrix)(void);
-	void (*glPushMatrix)(void);
-	void (*glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
-	void (*glRenderbufferStorageOES)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-	void (*glRotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-	void (*glRotatex)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-	void (*glSampleCoverage)(GLclampf value, GLboolean invert);
-	void (*glSampleCoveragex)(GLclampx value, GLboolean invert);
-	void (*glScalef)(GLfloat x, GLfloat y, GLfloat z);
-	void (*glScalex)(GLfixed x, GLfixed y, GLfixed z);
-	void (*glScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
-	void (*glShadeModel)(GLenum mode);
-	void (*glStencilFunc)(GLenum func, GLint ref, GLuint mask);
-	void (*glStencilMask)(GLuint mask);
-	void (*glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass);
-	void (*glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-	void (*glTexEnvf)(GLenum target, GLenum pname, GLfloat param);
-	void (*glTexEnvfv)(GLenum target, GLenum pname, const GLfloat *params);
-	void (*glTexEnvi)(GLenum target, GLenum pname, GLint param);
-	void (*glTexEnvx)(GLenum target, GLenum pname, GLfixed param);
-	void (*glTexEnviv)(GLenum target, GLenum pname, const GLint *params);
-	void (*glTexEnvxv)(GLenum target, GLenum pname, const GLfixed *params);
-	void (*glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
-	                     GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-	void (*glTexParameterf)(GLenum target, GLenum pname, GLfloat param);
-	void (*glTexParameterfv)(GLenum target, GLenum pname, const GLfloat* params);
-	void (*glTexParameteri)(GLenum target, GLenum pname, GLint param);
-	void (*glTexParameteriv)(GLenum target, GLenum pname, const GLint* params);
-	void (*glTexParameterx)(GLenum target, GLenum pname, GLfixed param);
-	void (*glTexParameterxv)(GLenum target, GLenum pname, const GLfixed *params);
-	void (*glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-	                        GLenum format, GLenum type, const GLvoid* pixels);
-	void (*glTranslatef)(GLfloat x, GLfloat y, GLfloat z);
-	void (*glTranslatex)(GLfixed x, GLfixed y, GLfixed z);
-	void (*glVertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-	void (*glViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
-	void (*glEGLImageTargetTexture2DOES)(GLenum target, GLeglImageOES image);
-	void (*glEGLImageTargetRenderbufferStorageOES)(GLenum target, GLeglImageOES image);
-	void (*glDrawTexsOES)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
-	void (*glDrawTexiOES)(GLint x, GLint y, GLint z, GLint width, GLint height);
-	void (*glDrawTexxOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
-	void (*glDrawTexsvOES)(const GLshort *coords);
-	void (*glDrawTexivOES)(const GLint *coords);
-	void (*glDrawTexxvOES)(const GLfixed *coords);
-	void (*glDrawTexfOES)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
-	void (*glDrawTexfvOES)(const GLfloat *coords);
+	void (GL_APIENTRY *glActiveTexture)(GLenum texture);
+	void (GL_APIENTRY *glAlphaFunc)(GLenum func, GLclampf ref);
+	void (GL_APIENTRY *glAlphaFuncx)(GLenum func, GLclampx ref);
+	void (GL_APIENTRY *glBindBuffer)(GLenum target, GLuint buffer);
+	void (GL_APIENTRY *glBindFramebuffer)(GLenum target, GLuint framebuffer);
+	void (GL_APIENTRY *glBindFramebufferOES)(GLenum target, GLuint framebuffer);
+	void (GL_APIENTRY *glBindRenderbufferOES)(GLenum target, GLuint renderbuffer);
+	void (GL_APIENTRY *glBindTexture)(GLenum target, GLuint texture);
+	void (GL_APIENTRY *glBlendEquationOES)(GLenum mode);
+	void (GL_APIENTRY *glBlendEquationSeparateOES)(GLenum modeRGB, GLenum modeAlpha);
+	void (GL_APIENTRY *glBlendFunc)(GLenum sfactor, GLenum dfactor);
+	void (GL_APIENTRY *glBlendFuncSeparateOES)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+	void (GL_APIENTRY *glBufferData)(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+	void (GL_APIENTRY *glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+	GLenum (GL_APIENTRY *glCheckFramebufferStatusOES)(GLenum target);
+	void (GL_APIENTRY *glClear)(GLbitfield mask);
+	void (GL_APIENTRY *glClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void (GL_APIENTRY *glClearColorx)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+	void (GL_APIENTRY *glClearDepthf)(GLclampf depth);
+	void (GL_APIENTRY *glClearDepthx)(GLclampx depth);
+	void (GL_APIENTRY *glClearStencil)(GLint s);
+	void (GL_APIENTRY *glClientActiveTexture)(GLenum texture);
+	void (GL_APIENTRY *glClipPlanef)(GLenum plane, const GLfloat *equation);
+	void (GL_APIENTRY *glClipPlanex)(GLenum plane, const GLfixed *equation);
+	void (GL_APIENTRY *glColor4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+	void (GL_APIENTRY *glColor4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+	void (GL_APIENTRY *glColor4x)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+	void (GL_APIENTRY *glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+	void (GL_APIENTRY *glColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+	void (GL_APIENTRY *glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
+	                                           GLint border, GLsizei imageSize, const GLvoid* data);
+	void (GL_APIENTRY *glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+	                                              GLenum format, GLsizei imageSize, const GLvoid* data);
+	void (GL_APIENTRY *glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+	void (GL_APIENTRY *glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glCullFace)(GLenum mode);
+	void (GL_APIENTRY *glDeleteBuffers)(GLsizei n, const GLuint* buffers);
+	void (GL_APIENTRY *glDeleteFramebuffersOES)(GLsizei n, const GLuint* framebuffers);
+	void (GL_APIENTRY *glDeleteRenderbuffersOES)(GLsizei n, const GLuint* renderbuffers);
+	void (GL_APIENTRY *glDeleteTextures)(GLsizei n, const GLuint* textures);
+	void (GL_APIENTRY *glDepthFunc)(GLenum func);
+	void (GL_APIENTRY *glDepthMask)(GLboolean flag);
+	void (GL_APIENTRY *glDepthRangex)(GLclampx zNear, GLclampx zFar);
+	void (GL_APIENTRY *glDepthRangef)(GLclampf zNear, GLclampf zFar);
+	void (GL_APIENTRY *glDisable)(GLenum cap);
+	void (GL_APIENTRY *glDisableClientState)(GLenum array);
+	void (GL_APIENTRY *glDrawArrays)(GLenum mode, GLint first, GLsizei count);
+	void (GL_APIENTRY *glDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+	void (GL_APIENTRY *glEnable)(GLenum cap);
+	void (GL_APIENTRY *glEnableClientState)(GLenum array);
+	void (GL_APIENTRY *glFinish)(void);
+	void (GL_APIENTRY *glFlush)(void);
+	void (GL_APIENTRY *glFramebufferRenderbufferOES)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void (GL_APIENTRY *glFramebufferTexture2DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void (GL_APIENTRY *glFogf)(GLenum pname, GLfloat param);
+	void (GL_APIENTRY *glFogfv)(GLenum pname, const GLfloat *params);
+	void (GL_APIENTRY *glFogx)(GLenum pname, GLfixed param);
+	void (GL_APIENTRY *glFogxv)(GLenum pname, const GLfixed *params);
+	void (GL_APIENTRY *glFrontFace)(GLenum mode);
+	void (GL_APIENTRY *glFrustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void (GL_APIENTRY *glFrustumx)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void (GL_APIENTRY *glGenerateMipmapOES)(GLenum target);
+	void (GL_APIENTRY *glGenBuffers)(GLsizei n, GLuint* buffers);
+	void (GL_APIENTRY *glGenFramebuffersOES)(GLsizei n, GLuint* framebuffers);
+	void (GL_APIENTRY *glGenRenderbuffersOES)(GLsizei n, GLuint* renderbuffers);
+	void (GL_APIENTRY *glGenTextures)(GLsizei n, GLuint* textures);
+	void (GL_APIENTRY *glGetRenderbufferParameterivOES)(GLenum target, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetBooleanv)(GLenum pname, GLboolean* params);
+	void (GL_APIENTRY *glGetBufferParameteriv)(GLenum target, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetClipPlanef)(GLenum pname, GLfloat eqn[4]);
+	void (GL_APIENTRY *glGetClipPlanex)(GLenum pname, GLfixed eqn[4]);
+	GLenum (GL_APIENTRY *glGetError)(void);
+	void (GL_APIENTRY *glGetFixedv)(GLenum pname, GLfixed *params);
+	void (GL_APIENTRY *glGetFloatv)(GLenum pname, GLfloat* params);
+	void (GL_APIENTRY *glGetFramebufferAttachmentParameterivOES)(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetIntegerv)(GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetLightfv)(GLenum light, GLenum pname, GLfloat *params);
+	void (GL_APIENTRY *glGetLightxv)(GLenum light, GLenum pname, GLfixed *params);
+	void (GL_APIENTRY *glGetMaterialfv)(GLenum face, GLenum pname, GLfloat *params);
+	void (GL_APIENTRY *glGetMaterialxv)(GLenum face, GLenum pname, GLfixed *params);
+	void (GL_APIENTRY *glGetPointerv)(GLenum pname, GLvoid **params);
+	const GLubyte* (GL_APIENTRY *glGetString)(GLenum name);
+	void (GL_APIENTRY *glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat* params);
+	void (GL_APIENTRY *glGetTexParameteriv)(GLenum target, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetTexEnvfv)(GLenum env, GLenum pname, GLfloat *params);
+	void (GL_APIENTRY *glGetTexEnviv)(GLenum env, GLenum pname, GLint *params);
+	void (GL_APIENTRY *glGetTexEnvxv)(GLenum env, GLenum pname, GLfixed *params);
+	void (GL_APIENTRY *glGetTexParameterxv)(GLenum target, GLenum pname, GLfixed *params);
+	void (GL_APIENTRY *glHint)(GLenum target, GLenum mode);
+	GLboolean (GL_APIENTRY *glIsBuffer)(GLuint buffer);
+	GLboolean (GL_APIENTRY *glIsEnabled)(GLenum cap);
+	GLboolean (GL_APIENTRY *glIsFramebufferOES)(GLuint framebuffer);
+	GLboolean (GL_APIENTRY *glIsTexture)(GLuint texture);
+	GLboolean (GL_APIENTRY *glIsRenderbufferOES)(GLuint renderbuffer);
+	void (GL_APIENTRY *glLightModelf)(GLenum pname, GLfloat param);
+	void (GL_APIENTRY *glLightModelfv)(GLenum pname, const GLfloat *params);
+	void (GL_APIENTRY *glLightModelx)(GLenum pname, GLfixed param);
+	void (GL_APIENTRY *glLightModelxv)(GLenum pname, const GLfixed *params);
+	void (GL_APIENTRY *glLightf)(GLenum light, GLenum pname, GLfloat param);
+	void (GL_APIENTRY *glLightfv)(GLenum light, GLenum pname, const GLfloat *params);
+	void (GL_APIENTRY *glLightx)(GLenum light, GLenum pname, GLfixed param);
+	void (GL_APIENTRY *glLightxv)(GLenum light, GLenum pname, const GLfixed *params);
+	void (GL_APIENTRY *glLineWidth)(GLfloat width);
+	void (GL_APIENTRY *glLineWidthx)(GLfixed width);
+	void (GL_APIENTRY *glLoadIdentity)(void);
+	void (GL_APIENTRY *glLoadMatrixf)(const GLfloat *m);
+	void (GL_APIENTRY *glLoadMatrixx)(const GLfixed *m);
+	void (GL_APIENTRY *glLogicOp)(GLenum opcode);
+	void (GL_APIENTRY *glMaterialf)(GLenum face, GLenum pname, GLfloat param);
+	void (GL_APIENTRY *glMaterialfv)(GLenum face, GLenum pname, const GLfloat *params);
+	void (GL_APIENTRY *glMaterialx)(GLenum face, GLenum pname, GLfixed param);
+	void (GL_APIENTRY *glMaterialxv)(GLenum face, GLenum pname, const GLfixed *params);
+	void (GL_APIENTRY *glMatrixMode)(GLenum mode);
+	void (GL_APIENTRY *glMultMatrixf)(const GLfloat *m);
+	void (GL_APIENTRY *glMultMatrixx)(const GLfixed *m);
+	void (GL_APIENTRY *glMultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+	void (GL_APIENTRY *glMultiTexCoord4x)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+	void (GL_APIENTRY *glNormal3f)(GLfloat nx, GLfloat ny, GLfloat nz);
+	void (GL_APIENTRY *glNormal3x)(GLfixed nx, GLfixed ny, GLfixed nz);
+	void (GL_APIENTRY *glNormalPointer)(GLenum type, GLsizei stride, const GLvoid *pointer);
+	void (GL_APIENTRY *glOrthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void (GL_APIENTRY *glOrthox)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void (GL_APIENTRY *glPixelStorei)(GLenum pname, GLint param);
+	void (GL_APIENTRY *glPointParameterf)(GLenum pname, GLfloat param);
+	void (GL_APIENTRY *glPointParameterfv)(GLenum pname, const GLfloat *params);
+	void (GL_APIENTRY *glPointParameterx)(GLenum pname, GLfixed param);
+	void (GL_APIENTRY *glPointParameterxv)(GLenum pname, const GLfixed *params);
+	void (GL_APIENTRY *glPointSize)(GLfloat size);
+	void (GL_APIENTRY *glPointSizePointerOES)(GLenum type, GLsizei stride, const GLvoid *pointer);
+	void (GL_APIENTRY *glPointSizex)(GLfixed size);
+	void (GL_APIENTRY *glPolygonOffset)(GLfloat factor, GLfloat units);
+	void (GL_APIENTRY *glPolygonOffsetx)(GLfixed factor, GLfixed units);
+	void (GL_APIENTRY *glPopMatrix)(void);
+	void (GL_APIENTRY *glPushMatrix)(void);
+	void (GL_APIENTRY *glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+	void (GL_APIENTRY *glRenderbufferStorageOES)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glRotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+	void (GL_APIENTRY *glRotatex)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+	void (GL_APIENTRY *glSampleCoverage)(GLclampf value, GLboolean invert);
+	void (GL_APIENTRY *glSampleCoveragex)(GLclampx value, GLboolean invert);
+	void (GL_APIENTRY *glScalef)(GLfloat x, GLfloat y, GLfloat z);
+	void (GL_APIENTRY *glScalex)(GLfixed x, GLfixed y, GLfixed z);
+	void (GL_APIENTRY *glScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glShadeModel)(GLenum mode);
+	void (GL_APIENTRY *glStencilFunc)(GLenum func, GLint ref, GLuint mask);
+	void (GL_APIENTRY *glStencilMask)(GLuint mask);
+	void (GL_APIENTRY *glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass);
+	void (GL_APIENTRY *glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+	void (GL_APIENTRY *glTexEnvf)(GLenum target, GLenum pname, GLfloat param);
+	void (GL_APIENTRY *glTexEnvfv)(GLenum target, GLenum pname, const GLfloat *params);
+	void (GL_APIENTRY *glTexEnvi)(GLenum target, GLenum pname, GLint param);
+	void (GL_APIENTRY *glTexEnvx)(GLenum target, GLenum pname, GLfixed param);
+	void (GL_APIENTRY *glTexEnviv)(GLenum target, GLenum pname, const GLint *params);
+	void (GL_APIENTRY *glTexEnvxv)(GLenum target, GLenum pname, const GLfixed *params);
+	void (GL_APIENTRY *glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+	                                 GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void (GL_APIENTRY *glTexParameterf)(GLenum target, GLenum pname, GLfloat param);
+	void (GL_APIENTRY *glTexParameterfv)(GLenum target, GLenum pname, const GLfloat* params);
+	void (GL_APIENTRY *glTexParameteri)(GLenum target, GLenum pname, GLint param);
+	void (GL_APIENTRY *glTexParameteriv)(GLenum target, GLenum pname, const GLint* params);
+	void (GL_APIENTRY *glTexParameterx)(GLenum target, GLenum pname, GLfixed param);
+	void (GL_APIENTRY *glTexParameterxv)(GLenum target, GLenum pname, const GLfixed *params);
+	void (GL_APIENTRY *glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+	                                    GLenum format, GLenum type, const GLvoid* pixels);
+	void (GL_APIENTRY *glTranslatef)(GLfloat x, GLfloat y, GLfloat z);
+	void (GL_APIENTRY *glTranslatex)(GLfixed x, GLfixed y, GLfixed z);
+	void (GL_APIENTRY *glVertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+	void (GL_APIENTRY *glViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glEGLImageTargetTexture2DOES)(GLenum target, GLeglImageOES image);
+	void (GL_APIENTRY *glEGLImageTargetRenderbufferStorageOES)(GLenum target, GLeglImageOES image);
+	void (GL_APIENTRY *glDrawTexsOES)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
+	void (GL_APIENTRY *glDrawTexiOES)(GLint x, GLint y, GLint z, GLint width, GLint height);
+	void (GL_APIENTRY *glDrawTexxOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
+	void (GL_APIENTRY *glDrawTexsvOES)(const GLshort *coords);
+	void (GL_APIENTRY *glDrawTexivOES)(const GLint *coords);
+	void (GL_APIENTRY *glDrawTexxvOES)(const GLfixed *coords);
+	void (GL_APIENTRY *glDrawTexfOES)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
+	void (GL_APIENTRY *glDrawTexfvOES)(const GLfloat *coords);
 
 	egl::Context *(*es1CreateContext)(egl::Display *display, const egl::Context *shareContext, const egl::Config *config);
 	__eglMustCastToProperFunctionPointerType (*es1GetProcAddress)(const char *procname);
diff --git a/src/OpenGL/libGLES_CM/main.cpp b/src/OpenGL/libGLES_CM/main.cpp
index 8ba8247..1666240 100644
--- a/src/OpenGL/libGLES_CM/main.cpp
+++ b/src/OpenGL/libGLES_CM/main.cpp
@@ -148,186 +148,186 @@
 
 namespace es1
 {
-void ActiveTexture(GLenum texture);
-void AlphaFunc(GLenum func, GLclampf ref);
-void AlphaFuncx(GLenum func, GLclampx ref);
-void BindBuffer(GLenum target, GLuint buffer);
-void BindFramebuffer(GLenum target, GLuint framebuffer);
-void BindFramebufferOES(GLenum target, GLuint framebuffer);
-void BindRenderbufferOES(GLenum target, GLuint renderbuffer);
-void BindTexture(GLenum target, GLuint texture);
-void BlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha);
-void BlendEquationOES(GLenum mode);
-void BlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha);
-void BlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-void BlendFunc(GLenum sfactor, GLenum dfactor);
-void BlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-void BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
-void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
-GLenum CheckFramebufferStatusOES(GLenum target);
-void Clear(GLbitfield mask);
-void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-void ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
-void ClearDepthf(GLclampf depth);
-void ClearDepthx(GLclampx depth);
-void ClearStencil(GLint s);
-void ClientActiveTexture(GLenum texture);
-void ClipPlanef(GLenum plane, const GLfloat *equation);
-void ClipPlanex(GLenum plane, const GLfixed *equation);
-void Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-void Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
-void Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-void ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
-                          GLint border, GLsizei imageSize, const GLvoid* data);
-void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-                             GLenum format, GLsizei imageSize, const GLvoid* data);
-void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-void CullFace(GLenum mode);
-void DeleteBuffers(GLsizei n, const GLuint* buffers);
-void DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers);
-void DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers);
-void DeleteTextures(GLsizei n, const GLuint* textures);
-void DepthFunc(GLenum func);
-void DepthMask(GLboolean flag);
-void DepthRangex(GLclampx zNear, GLclampx zFar);
-void DepthRangef(GLclampf zNear, GLclampf zFar);
-void Disable(GLenum cap);
-void DisableClientState(GLenum array);
-void DrawArrays(GLenum mode, GLint first, GLsizei count);
-void DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
-void Enable(GLenum cap);
-void EnableClientState(GLenum array);
-void Finish(void);
-void Flush(void);
-void FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-void FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-void Fogf(GLenum pname, GLfloat param);
-void Fogfv(GLenum pname, const GLfloat *params);
-void Fogx(GLenum pname, GLfixed param);
-void Fogxv(GLenum pname, const GLfixed *params);
-void FrontFace(GLenum mode);
-void Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-void Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-void GenerateMipmapOES(GLenum target);
-void GenBuffers(GLsizei n, GLuint* buffers);
-void GenFramebuffersOES(GLsizei n, GLuint* framebuffers);
-void GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers);
-void GenTextures(GLsizei n, GLuint* textures);
-void GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params);
-void GetBooleanv(GLenum pname, GLboolean* params);
-void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params);
-void GetClipPlanef(GLenum pname, GLfloat eqn[4]);
-void GetClipPlanex(GLenum pname, GLfixed eqn[4]);
-GLenum GetError(void);
-void GetFixedv(GLenum pname, GLfixed *params);
-void GetFloatv(GLenum pname, GLfloat* params);
-void GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params);
-void GetIntegerv(GLenum pname, GLint* params);
-void GetLightfv(GLenum light, GLenum pname, GLfloat *params);
-void GetLightxv(GLenum light, GLenum pname, GLfixed *params);
-void GetMaterialfv(GLenum face, GLenum pname, GLfloat *params);
-void GetMaterialxv(GLenum face, GLenum pname, GLfixed *params);
-void GetPointerv(GLenum pname, GLvoid **params);
-const GLubyte* GetString(GLenum name);
-void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);
-void GetTexParameteriv(GLenum target, GLenum pname, GLint* params);
-void GetTexEnvfv(GLenum env, GLenum pname, GLfloat *params);
-void GetTexEnviv(GLenum env, GLenum pname, GLint *params);
-void GetTexEnvxv(GLenum env, GLenum pname, GLfixed *params);
-void GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params);
-void Hint(GLenum target, GLenum mode);
-GLboolean IsBuffer(GLuint buffer);
-GLboolean IsEnabled(GLenum cap);
-GLboolean IsFramebufferOES(GLuint framebuffer);
-GLboolean IsTexture(GLuint texture);
-GLboolean IsRenderbufferOES(GLuint renderbuffer);
-void LightModelf(GLenum pname, GLfloat param);
-void LightModelfv(GLenum pname, const GLfloat *params);
-void LightModelx(GLenum pname, GLfixed param);
-void LightModelxv(GLenum pname, const GLfixed *params);
-void Lightf(GLenum light, GLenum pname, GLfloat param);
-void Lightfv(GLenum light, GLenum pname, const GLfloat *params);
-void Lightx(GLenum light, GLenum pname, GLfixed param);
-void Lightxv(GLenum light, GLenum pname, const GLfixed *params);
-void LineWidth(GLfloat width);
-void LineWidthx(GLfixed width);
-void LoadIdentity(void);
-void LoadMatrixf(const GLfloat *m);
-void LoadMatrixx(const GLfixed *m);
-void LogicOp(GLenum opcode);
-void Materialf(GLenum face, GLenum pname, GLfloat param);
-void Materialfv(GLenum face, GLenum pname, const GLfloat *params);
-void Materialx(GLenum face, GLenum pname, GLfixed param);
-void Materialxv(GLenum face, GLenum pname, const GLfixed *params);
-void MatrixMode(GLenum mode);
-void MultMatrixf(const GLfloat *m);
-void MultMatrixx(const GLfixed *m);
-void MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-void MultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-void Normal3f(GLfloat nx, GLfloat ny, GLfloat nz);
-void Normal3x(GLfixed nx, GLfixed ny, GLfixed nz);
-void NormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer);
-void Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-void Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-void PixelStorei(GLenum pname, GLint param);
-void PointParameterf(GLenum pname, GLfloat param);
-void PointParameterfv(GLenum pname, const GLfloat *params);
-void PointParameterx(GLenum pname, GLfixed param);
-void PointParameterxv(GLenum pname, const GLfixed *params);
-void PointSize(GLfloat size);
-void PointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer);
-void PointSizex(GLfixed size);
-void PolygonOffset(GLfloat factor, GLfloat units);
-void PolygonOffsetx(GLfixed factor, GLfixed units);
-void PopMatrix(void);
-void PushMatrix(void);
-void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
-void RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-void Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-void Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-void SampleCoverage(GLclampf value, GLboolean invert);
-void SampleCoveragex(GLclampx value, GLboolean invert);
-void Scalef(GLfloat x, GLfloat y, GLfloat z);
-void Scalex(GLfixed x, GLfixed y, GLfixed z);
-void Scissor(GLint x, GLint y, GLsizei width, GLsizei height);
-void ShadeModel(GLenum mode);
-void StencilFunc(GLenum func, GLint ref, GLuint mask);
-void StencilMask(GLuint mask);
-void StencilOp(GLenum fail, GLenum zfail, GLenum zpass);
-void TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-void TexEnvf(GLenum target, GLenum pname, GLfloat param);
-void TexEnvfv(GLenum target, GLenum pname, const GLfloat *params);
-void TexEnvi(GLenum target, GLenum pname, GLint param);
-void TexEnvx(GLenum target, GLenum pname, GLfixed param);
-void TexEnviv(GLenum target, GLenum pname, const GLint *params);
-void TexEnvxv(GLenum target, GLenum pname, const GLfixed *params);
-void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
-                GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-void TexParameterf(GLenum target, GLenum pname, GLfloat param);
-void TexParameterfv(GLenum target, GLenum pname, const GLfloat* params);
-void TexParameteri(GLenum target, GLenum pname, GLint param);
-void TexParameteriv(GLenum target, GLenum pname, const GLint* params);
-void TexParameterx(GLenum target, GLenum pname, GLfixed param);
-void TexParameterxv(GLenum target, GLenum pname, const GLfixed *params);
-void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-                   GLenum format, GLenum type, const GLvoid* pixels);
-void Translatef(GLfloat x, GLfloat y, GLfloat z);
-void Translatex(GLfixed x, GLfixed y, GLfixed z);
-void VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-void Viewport(GLint x, GLint y, GLsizei width, GLsizei height);
-void EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
-void EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
-void DrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
-void DrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height);
-void DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
-void DrawTexsvOES(const GLshort *coords);
-void DrawTexivOES(const GLint *coords);
-void DrawTexxvOES(const GLfixed *coords);
-void DrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
-void DrawTexfvOES(const GLfloat *coords);
+void GL_APIENTRY ActiveTexture(GLenum texture);
+void GL_APIENTRY AlphaFunc(GLenum func, GLclampf ref);
+void GL_APIENTRY AlphaFuncx(GLenum func, GLclampx ref);
+void GL_APIENTRY BindBuffer(GLenum target, GLuint buffer);
+void GL_APIENTRY BindFramebuffer(GLenum target, GLuint framebuffer);
+void GL_APIENTRY BindFramebufferOES(GLenum target, GLuint framebuffer);
+void GL_APIENTRY BindRenderbufferOES(GLenum target, GLuint renderbuffer);
+void GL_APIENTRY BindTexture(GLenum target, GLuint texture);
+void GL_APIENTRY BlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha);
+void GL_APIENTRY BlendEquationOES(GLenum mode);
+void GL_APIENTRY BlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha);
+void GL_APIENTRY BlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+void GL_APIENTRY BlendFunc(GLenum sfactor, GLenum dfactor);
+void GL_APIENTRY BlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+void GL_APIENTRY BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+void GL_APIENTRY BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+GLenum GL_APIENTRY CheckFramebufferStatusOES(GLenum target);
+void GL_APIENTRY Clear(GLbitfield mask);
+void GL_APIENTRY ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+void GL_APIENTRY ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+void GL_APIENTRY ClearDepthf(GLclampf depth);
+void GL_APIENTRY ClearDepthx(GLclampx depth);
+void GL_APIENTRY ClearStencil(GLint s);
+void GL_APIENTRY ClientActiveTexture(GLenum texture);
+void GL_APIENTRY ClipPlanef(GLenum plane, const GLfloat *equation);
+void GL_APIENTRY ClipPlanex(GLenum plane, const GLfixed *equation);
+void GL_APIENTRY Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+void GL_APIENTRY Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+void GL_APIENTRY Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+void GL_APIENTRY ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+void GL_APIENTRY ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+void GL_APIENTRY CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
+                                      GLint border, GLsizei imageSize, const GLvoid* data);
+void GL_APIENTRY CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+                                         GLenum format, GLsizei imageSize, const GLvoid* data);
+void GL_APIENTRY CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+void GL_APIENTRY CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+void GL_APIENTRY CullFace(GLenum mode);
+void GL_APIENTRY DeleteBuffers(GLsizei n, const GLuint* buffers);
+void GL_APIENTRY DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers);
+void GL_APIENTRY DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers);
+void GL_APIENTRY DeleteTextures(GLsizei n, const GLuint* textures);
+void GL_APIENTRY DepthFunc(GLenum func);
+void GL_APIENTRY DepthMask(GLboolean flag);
+void GL_APIENTRY DepthRangex(GLclampx zNear, GLclampx zFar);
+void GL_APIENTRY DepthRangef(GLclampf zNear, GLclampf zFar);
+void GL_APIENTRY Disable(GLenum cap);
+void GL_APIENTRY DisableClientState(GLenum array);
+void GL_APIENTRY DrawArrays(GLenum mode, GLint first, GLsizei count);
+void GL_APIENTRY DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+void GL_APIENTRY Enable(GLenum cap);
+void GL_APIENTRY EnableClientState(GLenum array);
+void GL_APIENTRY Finish(void);
+void GL_APIENTRY Flush(void);
+void GL_APIENTRY FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+void GL_APIENTRY FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+void GL_APIENTRY Fogf(GLenum pname, GLfloat param);
+void GL_APIENTRY Fogfv(GLenum pname, const GLfloat *params);
+void GL_APIENTRY Fogx(GLenum pname, GLfixed param);
+void GL_APIENTRY Fogxv(GLenum pname, const GLfixed *params);
+void GL_APIENTRY FrontFace(GLenum mode);
+void GL_APIENTRY Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+void GL_APIENTRY Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+void GL_APIENTRY GenerateMipmapOES(GLenum target);
+void GL_APIENTRY GenBuffers(GLsizei n, GLuint* buffers);
+void GL_APIENTRY GenFramebuffersOES(GLsizei n, GLuint* framebuffers);
+void GL_APIENTRY GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers);
+void GL_APIENTRY GenTextures(GLsizei n, GLuint* textures);
+void GL_APIENTRY GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params);
+void GL_APIENTRY GetBooleanv(GLenum pname, GLboolean* params);
+void GL_APIENTRY GetBufferParameteriv(GLenum target, GLenum pname, GLint* params);
+void GL_APIENTRY GetClipPlanef(GLenum pname, GLfloat eqn[4]);
+void GL_APIENTRY GetClipPlanex(GLenum pname, GLfixed eqn[4]);
+GLenum GL_APIENTRY GetError(void);
+void GL_APIENTRY GetFixedv(GLenum pname, GLfixed *params);
+void GL_APIENTRY GetFloatv(GLenum pname, GLfloat* params);
+void GL_APIENTRY GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+void GL_APIENTRY GetIntegerv(GLenum pname, GLint* params);
+void GL_APIENTRY GetLightfv(GLenum light, GLenum pname, GLfloat *params);
+void GL_APIENTRY GetLightxv(GLenum light, GLenum pname, GLfixed *params);
+void GL_APIENTRY GetMaterialfv(GLenum face, GLenum pname, GLfloat *params);
+void GL_APIENTRY GetMaterialxv(GLenum face, GLenum pname, GLfixed *params);
+void GL_APIENTRY GetPointerv(GLenum pname, GLvoid **params);
+const GLubyte* GL_APIENTRY GetString(GLenum name);
+void GL_APIENTRY GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);
+void GL_APIENTRY GetTexParameteriv(GLenum target, GLenum pname, GLint* params);
+void GL_APIENTRY GetTexEnvfv(GLenum env, GLenum pname, GLfloat *params);
+void GL_APIENTRY GetTexEnviv(GLenum env, GLenum pname, GLint *params);
+void GL_APIENTRY GetTexEnvxv(GLenum env, GLenum pname, GLfixed *params);
+void GL_APIENTRY GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params);
+void GL_APIENTRY Hint(GLenum target, GLenum mode);
+GLboolean GL_APIENTRY IsBuffer(GLuint buffer);
+GLboolean GL_APIENTRY IsEnabled(GLenum cap);
+GLboolean GL_APIENTRY IsFramebufferOES(GLuint framebuffer);
+GLboolean GL_APIENTRY IsTexture(GLuint texture);
+GLboolean GL_APIENTRY IsRenderbufferOES(GLuint renderbuffer);
+void GL_APIENTRY LightModelf(GLenum pname, GLfloat param);
+void GL_APIENTRY LightModelfv(GLenum pname, const GLfloat *params);
+void GL_APIENTRY LightModelx(GLenum pname, GLfixed param);
+void GL_APIENTRY LightModelxv(GLenum pname, const GLfixed *params);
+void GL_APIENTRY Lightf(GLenum light, GLenum pname, GLfloat param);
+void GL_APIENTRY Lightfv(GLenum light, GLenum pname, const GLfloat *params);
+void GL_APIENTRY Lightx(GLenum light, GLenum pname, GLfixed param);
+void GL_APIENTRY Lightxv(GLenum light, GLenum pname, const GLfixed *params);
+void GL_APIENTRY LineWidth(GLfloat width);
+void GL_APIENTRY LineWidthx(GLfixed width);
+void GL_APIENTRY LoadIdentity(void);
+void GL_APIENTRY LoadMatrixf(const GLfloat *m);
+void GL_APIENTRY LoadMatrixx(const GLfixed *m);
+void GL_APIENTRY LogicOp(GLenum opcode);
+void GL_APIENTRY Materialf(GLenum face, GLenum pname, GLfloat param);
+void GL_APIENTRY Materialfv(GLenum face, GLenum pname, const GLfloat *params);
+void GL_APIENTRY Materialx(GLenum face, GLenum pname, GLfixed param);
+void GL_APIENTRY Materialxv(GLenum face, GLenum pname, const GLfixed *params);
+void GL_APIENTRY MatrixMode(GLenum mode);
+void GL_APIENTRY MultMatrixf(const GLfloat *m);
+void GL_APIENTRY MultMatrixx(const GLfixed *m);
+void GL_APIENTRY MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+void GL_APIENTRY MultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+void GL_APIENTRY Normal3f(GLfloat nx, GLfloat ny, GLfloat nz);
+void GL_APIENTRY Normal3x(GLfixed nx, GLfixed ny, GLfixed nz);
+void GL_APIENTRY NormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer);
+void GL_APIENTRY Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+void GL_APIENTRY Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+void GL_APIENTRY PixelStorei(GLenum pname, GLint param);
+void GL_APIENTRY PointParameterf(GLenum pname, GLfloat param);
+void GL_APIENTRY PointParameterfv(GLenum pname, const GLfloat *params);
+void GL_APIENTRY PointParameterx(GLenum pname, GLfixed param);
+void GL_APIENTRY PointParameterxv(GLenum pname, const GLfixed *params);
+void GL_APIENTRY PointSize(GLfloat size);
+void GL_APIENTRY PointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer);
+void GL_APIENTRY PointSizex(GLfixed size);
+void GL_APIENTRY PolygonOffset(GLfloat factor, GLfloat units);
+void GL_APIENTRY PolygonOffsetx(GLfixed factor, GLfixed units);
+void GL_APIENTRY PopMatrix(void);
+void GL_APIENTRY PushMatrix(void);
+void GL_APIENTRY ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+void GL_APIENTRY RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+void GL_APIENTRY Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+void GL_APIENTRY Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+void GL_APIENTRY SampleCoverage(GLclampf value, GLboolean invert);
+void GL_APIENTRY SampleCoveragex(GLclampx value, GLboolean invert);
+void GL_APIENTRY Scalef(GLfloat x, GLfloat y, GLfloat z);
+void GL_APIENTRY Scalex(GLfixed x, GLfixed y, GLfixed z);
+void GL_APIENTRY Scissor(GLint x, GLint y, GLsizei width, GLsizei height);
+void GL_APIENTRY ShadeModel(GLenum mode);
+void GL_APIENTRY StencilFunc(GLenum func, GLint ref, GLuint mask);
+void GL_APIENTRY StencilMask(GLuint mask);
+void GL_APIENTRY StencilOp(GLenum fail, GLenum zfail, GLenum zpass);
+void GL_APIENTRY TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+void GL_APIENTRY TexEnvf(GLenum target, GLenum pname, GLfloat param);
+void GL_APIENTRY TexEnvfv(GLenum target, GLenum pname, const GLfloat *params);
+void GL_APIENTRY TexEnvi(GLenum target, GLenum pname, GLint param);
+void GL_APIENTRY TexEnvx(GLenum target, GLenum pname, GLfixed param);
+void GL_APIENTRY TexEnviv(GLenum target, GLenum pname, const GLint *params);
+void GL_APIENTRY TexEnvxv(GLenum target, GLenum pname, const GLfixed *params);
+void GL_APIENTRY TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+                            GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+void GL_APIENTRY TexParameterf(GLenum target, GLenum pname, GLfloat param);
+void GL_APIENTRY TexParameterfv(GLenum target, GLenum pname, const GLfloat* params);
+void GL_APIENTRY TexParameteri(GLenum target, GLenum pname, GLint param);
+void GL_APIENTRY TexParameteriv(GLenum target, GLenum pname, const GLint* params);
+void GL_APIENTRY TexParameterx(GLenum target, GLenum pname, GLfixed param);
+void GL_APIENTRY TexParameterxv(GLenum target, GLenum pname, const GLfixed *params);
+void GL_APIENTRY TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+                               GLenum format, GLenum type, const GLvoid* pixels);
+void GL_APIENTRY Translatef(GLfloat x, GLfloat y, GLfloat z);
+void GL_APIENTRY Translatex(GLfixed x, GLfixed y, GLfixed z);
+void GL_APIENTRY VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+void GL_APIENTRY Viewport(GLint x, GLint y, GLsizei width, GLsizei height);
+void GL_APIENTRY EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
+void GL_APIENTRY EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
+void GL_APIENTRY DrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
+void GL_APIENTRY DrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height);
+void GL_APIENTRY DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
+void GL_APIENTRY DrawTexsvOES(const GLshort *coords);
+void GL_APIENTRY DrawTexivOES(const GLint *coords);
+void GL_APIENTRY DrawTexxvOES(const GLfixed *coords);
+void GL_APIENTRY DrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
+void GL_APIENTRY DrawTexfvOES(const GLfloat *coords);
 }
 
 egl::Context *es1CreateContext(egl::Display *display, const egl::Context *shareContext, const egl::Config *config);
diff --git a/src/OpenGL/libGLESv2/entry_points.h b/src/OpenGL/libGLESv2/entry_points.h
index b72c6cd..b3107a0 100644
--- a/src/OpenGL/libGLESv2/entry_points.h
+++ b/src/OpenGL/libGLESv2/entry_points.h
@@ -21,314 +21,314 @@
 
 namespace gl
 {
-	void ActiveTexture(GLenum texture);
-	void AttachShader(GLuint program, GLuint shader);
-	void BeginQueryEXT(GLenum target, GLuint name);
-	void BindAttribLocation(GLuint program, GLuint index, const GLchar* name);
-	void BindBuffer(GLenum target, GLuint buffer);
-	void BindFramebuffer(GLenum target, GLuint framebuffer);
-	void BindRenderbuffer(GLenum target, GLuint renderbuffer);
-	void BindTexture(GLenum target, GLuint texture);
-	void BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-	void BlendEquation(GLenum mode);
-	void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
-	void BlendFunc(GLenum sfactor, GLenum dfactor);
-	void BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-	void BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
-	void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
-	GLenum CheckFramebufferStatus(GLenum target);
-	void Clear(GLbitfield mask);
-	void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-	void ClearDepthf(GLclampf depth);
-	void ClearStencil(GLint s);
-	void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-	void CompileShader(GLuint shader);
-	void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
-		GLint border, GLsizei imageSize, const GLvoid* data);
-	void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-		GLenum format, GLsizei imageSize, const GLvoid* data);
-	void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-	void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-	GLuint CreateProgram(void);
-	GLuint CreateShader(GLenum type);
-	void CullFace(GLenum mode);
-	void DeleteBuffers(GLsizei n, const GLuint* buffers);
-	void DeleteFencesNV(GLsizei n, const GLuint* fences);
-	void DeleteFramebuffers(GLsizei n, const GLuint* framebuffers);
-	void DeleteProgram(GLuint program);
-	void DeleteQueriesEXT(GLsizei n, const GLuint *ids);
-	void DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers);
-	void DeleteShader(GLuint shader);
-	void DeleteTextures(GLsizei n, const GLuint* textures);
-	void DepthFunc(GLenum func);
-	void DepthMask(GLboolean flag);
-	void DepthRangef(GLclampf zNear, GLclampf zFar);
-	void DetachShader(GLuint program, GLuint shader);
-	void Disable(GLenum cap);
-	void DisableVertexAttribArray(GLuint index);
-	void DrawArrays(GLenum mode, GLint first, GLsizei count);
-	void DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
-	void DrawArraysInstancedEXT(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
-	void DrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
-	void VertexAttribDivisorEXT(GLuint index, GLuint divisor);
-	void DrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
-	void DrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
-	void VertexAttribDivisorANGLE(GLuint index, GLuint divisor);
-	void Enable(GLenum cap);
-	void EnableVertexAttribArray(GLuint index);
-	void EndQueryEXT(GLenum target);
-	void FinishFenceNV(GLuint fence);
-	void Finish(void);
-	void Flush(void);
-	void FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-	void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-	void FrontFace(GLenum mode);
-	void GenBuffers(GLsizei n, GLuint* buffers);
-	void GenerateMipmap(GLenum target);
-	void GenFencesNV(GLsizei n, GLuint* fences);
-	void GenFramebuffers(GLsizei n, GLuint* framebuffers);
-	void GenQueriesEXT(GLsizei n, GLuint* ids);
-	void GenRenderbuffers(GLsizei n, GLuint* renderbuffers);
-	void GenTextures(GLsizei n, GLuint* textures);
-	void GetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-	void GetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-	void GetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
-	int GetAttribLocation(GLuint program, const GLchar* name);
-	void GetBooleanv(GLenum pname, GLboolean* params);
-	void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params);
-	GLenum GetError(void);
-	void GetFenceivNV(GLuint fence, GLenum pname, GLint *params);
-	void GetFloatv(GLenum pname, GLfloat* params);
-	void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params);
-	GLenum GetGraphicsResetStatusEXT(void);
-	void GetIntegerv(GLenum pname, GLint* params);
-	void GetProgramiv(GLuint program, GLenum pname, GLint* params);
-	void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-	void GetQueryivEXT(GLenum target, GLenum pname, GLint *params);
-	void GetQueryObjectuivEXT(GLuint name, GLenum pname, GLuint *params);
-	void GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params);
-	void GetShaderiv(GLuint shader, GLenum pname, GLint* params);
-	void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-	void GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-	void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
-	const GLubyte* GetString(GLenum name);
-	void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);
-	void GetTexParameteriv(GLenum target, GLenum pname, GLint* params);
-	void GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
-	void GetUniformfv(GLuint program, GLint location, GLfloat* params);
-	void GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* params);
-	void GetUniformiv(GLuint program, GLint location, GLint* params);
-	int GetUniformLocation(GLuint program, const GLchar* name);
-	void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params);
-	void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params);
-	void GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer);
-	void Hint(GLenum target, GLenum mode);
-	GLboolean IsBuffer(GLuint buffer);
-	GLboolean IsEnabled(GLenum cap);
-	GLboolean IsFenceNV(GLuint fence);
-	GLboolean IsFramebuffer(GLuint framebuffer);
-	GLboolean IsProgram(GLuint program);
-	GLboolean IsQueryEXT(GLuint name);
-	GLboolean IsRenderbuffer(GLuint renderbuffer);
-	GLboolean IsShader(GLuint shader);
-	GLboolean IsTexture(GLuint texture);
-	void LineWidth(GLfloat width);
-	void LinkProgram(GLuint program);
-	void PixelStorei(GLenum pname, GLint param);
-	void PolygonOffset(GLfloat factor, GLfloat units);
-	void ReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
-		GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
-	void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
-	void ReleaseShaderCompiler(void);
-	void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-	void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-	void RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-	void SampleCoverage(GLclampf value, GLboolean invert);
-	void SetFenceNV(GLuint fence, GLenum condition);
-	void Scissor(GLint x, GLint y, GLsizei width, GLsizei height);
-	void ShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
-	void ShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length);
-	void StencilFunc(GLenum func, GLint ref, GLuint mask);
-	void StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
-	void StencilMask(GLuint mask);
-	void StencilMaskSeparate(GLenum face, GLuint mask);
-	void StencilOp(GLenum fail, GLenum zfail, GLenum zpass);
-	void StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
-	GLboolean TestFenceNV(GLuint fence);
-	void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
-		GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-	void TexParameterf(GLenum target, GLenum pname, GLfloat param);
-	void TexParameterfv(GLenum target, GLenum pname, const GLfloat* params);
-	void TexParameteri(GLenum target, GLenum pname, GLint param);
-	void TexParameteriv(GLenum target, GLenum pname, const GLint* params);
-	void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-		GLenum format, GLenum type, const GLvoid* pixels);
-	void Uniform1f(GLint location, GLfloat x);
-	void Uniform1fv(GLint location, GLsizei count, const GLfloat* v);
-	void Uniform1i(GLint location, GLint x);
-	void Uniform1iv(GLint location, GLsizei count, const GLint* v);
-	void Uniform2f(GLint location, GLfloat x, GLfloat y);
-	void Uniform2fv(GLint location, GLsizei count, const GLfloat* v);
-	void Uniform2i(GLint location, GLint x, GLint y);
-	void Uniform2iv(GLint location, GLsizei count, const GLint* v);
-	void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z);
-	void Uniform3fv(GLint location, GLsizei count, const GLfloat* v);
-	void Uniform3i(GLint location, GLint x, GLint y, GLint z);
-	void Uniform3iv(GLint location, GLsizei count, const GLint* v);
-	void Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-	void Uniform4fv(GLint location, GLsizei count, const GLfloat* v);
-	void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w);
-	void Uniform4iv(GLint location, GLsizei count, const GLint* v);
-	void UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-	void UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-	void UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-	void UseProgram(GLuint program);
-	void ValidateProgram(GLuint program);
-	void VertexAttrib1f(GLuint index, GLfloat x);
-	void VertexAttrib1fv(GLuint index, const GLfloat* values);
-	void VertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
-	void VertexAttrib2fv(GLuint index, const GLfloat* values);
-	void VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
-	void VertexAttrib3fv(GLuint index, const GLfloat* values);
-	void VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-	void VertexAttrib4fv(GLuint index, const GLfloat* values);
-	void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
-	void Viewport(GLint x, GLint y, GLsizei width, GLsizei height);
-	void BlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-	void BlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
-		GLbitfield mask, GLenum filter);
-	void TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
-		GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-	void TexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-	void CopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-	void CompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-	void CompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-	void FramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-	void EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
-	void EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
-	GLboolean IsRenderbufferOES(GLuint renderbuffer);
-	void BindRenderbufferOES(GLenum target, GLuint renderbuffer);
-	void DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers);
-	void GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers);
-	void RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-	void GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params);
-	GLboolean IsFramebufferOES(GLuint framebuffer);
-	void BindFramebufferOES(GLenum target, GLuint framebuffer);
-	void DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers);
-	void GenFramebuffersOES(GLsizei n, GLuint* framebuffers);
-	GLenum CheckFramebufferStatusOES(GLenum target);
-	void FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-	void FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-	void GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params);
-	void GenerateMipmapOES(GLenum target);
-	void DrawBuffersEXT(GLsizei n, const GLenum *bufs);
-	void ReadBuffer(GLenum src);
-	void DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
-	void TexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *data);
-	void TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-	void CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-	void CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-	void CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-	void GenQueries(GLsizei n, GLuint *ids);
-	void DeleteQueries(GLsizei n, const GLuint *ids);
-	GLboolean IsQuery(GLuint id);
-	void BeginQuery(GLenum target, GLuint id);
-	void EndQuery(GLenum target);
-	void GetQueryiv(GLenum target, GLenum pname, GLint *params);
-	void GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
-	GLboolean UnmapBuffer(GLenum target);
-	void GetBufferPointerv(GLenum target, GLenum pname, void **params);
-	void DrawBuffers(GLsizei n, const GLenum *bufs);
-	void UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-	void UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-	void UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-	void UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-	void UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-	void UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-	void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-	void FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-	void *MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-	void FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
-	void BindVertexArray(GLuint array);
-	void BindVertexArrayOES(GLuint array);
-	void DeleteVertexArrays(GLsizei n, const GLuint *arrays);
-	void DeleteVertexArraysOES(GLsizei n, const GLuint *arrays);
-	void GenVertexArrays(GLsizei n, GLuint *arrays);
-	void GenVertexArraysOES(GLsizei n, GLuint *arrays);
-	GLboolean IsVertexArray(GLuint array);
-	GLboolean IsVertexArrayOES(GLuint array);
-	void GetIntegeri_v(GLenum target, GLuint index, GLint *data);
-	void BeginTransformFeedback(GLenum primitiveMode);
-	void EndTransformFeedback(void);
-	void BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-	void BindBufferBase(GLenum target, GLuint index, GLuint buffer);
-	void TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
-	void GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-	void VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
-	void GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
-	void GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
-	void VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
-	void VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
-	void VertexAttribI4iv(GLuint index, const GLint *v);
-	void VertexAttribI4uiv(GLuint index, const GLuint *v);
-	void GetUniformuiv(GLuint program, GLint location, GLuint *params);
-	GLint GetFragDataLocation(GLuint program, const GLchar *name);
-	void Uniform1ui(GLint location, GLuint v0);
-	void Uniform2ui(GLint location, GLuint v0, GLuint v1);
-	void Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
-	void Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-	void Uniform1uiv(GLint location, GLsizei count, const GLuint *value);
-	void Uniform2uiv(GLint location, GLsizei count, const GLuint *value);
-	void Uniform3uiv(GLint location, GLsizei count, const GLuint *value);
-	void Uniform4uiv(GLint location, GLsizei count, const GLuint *value);
-	void ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
-	void ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
-	void ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
-	void ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-	const GLubyte *GetStringi(GLenum name, GLuint index);
-	void CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
-	void GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
-	void GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-	GLuint GetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName);
-	void GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-	void GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-	void UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
-	void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
-	void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
-	GLsync FenceSync(GLenum condition, GLbitfield flags);
-	GLboolean IsSync(GLsync sync);
-	void DeleteSync(GLsync sync);
-	GLenum ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
-	void WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
-	void GetInteger64v(GLenum pname, GLint64 *data);
-	void GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
-	void GetInteger64i_v(GLenum target, GLuint index, GLint64 *data);
-	void GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
-	void GenSamplers(GLsizei count, GLuint *samplers);
-	void DeleteSamplers(GLsizei count, const GLuint *samplers);
-	GLboolean IsSampler(GLuint sampler);
-	void BindSampler(GLuint unit, GLuint sampler);
-	void SamplerParameteri(GLuint sampler, GLenum pname, GLint param);
-	void SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param);
-	void SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
-	void SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param);
-	void GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params);
-	void GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params);
-	void VertexAttribDivisor(GLuint index, GLuint divisor);
-	void BindTransformFeedback(GLenum target, GLuint id);
-	void DeleteTransformFeedbacks(GLsizei n, const GLuint *ids);
-	void GenTransformFeedbacks(GLsizei n, GLuint *ids);
-	GLboolean IsTransformFeedback(GLuint id);
-	void PauseTransformFeedback(void);
-	void ResumeTransformFeedback(void);
-	void GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
-	void ProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
-	void ProgramParameteri(GLuint program, GLenum pname, GLint value);
-	void InvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments);
-	void InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
-	void TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-	void TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-	void GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
+	void GL_APIENTRY ActiveTexture(GLenum texture);
+	void GL_APIENTRY AttachShader(GLuint program, GLuint shader);
+	void GL_APIENTRY BeginQueryEXT(GLenum target, GLuint name);
+	void GL_APIENTRY BindAttribLocation(GLuint program, GLuint index, const GLchar* name);
+	void GL_APIENTRY BindBuffer(GLenum target, GLuint buffer);
+	void GL_APIENTRY BindFramebuffer(GLenum target, GLuint framebuffer);
+	void GL_APIENTRY BindRenderbuffer(GLenum target, GLuint renderbuffer);
+	void GL_APIENTRY BindTexture(GLenum target, GLuint texture);
+	void GL_APIENTRY BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void GL_APIENTRY BlendEquation(GLenum mode);
+	void GL_APIENTRY BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
+	void GL_APIENTRY BlendFunc(GLenum sfactor, GLenum dfactor);
+	void GL_APIENTRY BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+	void GL_APIENTRY BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+	void GL_APIENTRY BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+	GLenum GL_APIENTRY CheckFramebufferStatus(GLenum target);
+	void GL_APIENTRY Clear(GLbitfield mask);
+	void GL_APIENTRY ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void GL_APIENTRY ClearDepthf(GLclampf depth);
+	void GL_APIENTRY ClearStencil(GLint s);
+	void GL_APIENTRY ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+	void GL_APIENTRY CompileShader(GLuint shader);
+	void GL_APIENTRY CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
+	                                      GLint border, GLsizei imageSize, const GLvoid* data);
+	void GL_APIENTRY CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+	                                         GLenum format, GLsizei imageSize, const GLvoid* data);
+	void GL_APIENTRY CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+	void GL_APIENTRY CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	GLuint GL_APIENTRY CreateProgram(void);
+	GLuint GL_APIENTRY CreateShader(GLenum type);
+	void GL_APIENTRY CullFace(GLenum mode);
+	void GL_APIENTRY DeleteBuffers(GLsizei n, const GLuint* buffers);
+	void GL_APIENTRY DeleteFencesNV(GLsizei n, const GLuint* fences);
+	void GL_APIENTRY DeleteFramebuffers(GLsizei n, const GLuint* framebuffers);
+	void GL_APIENTRY DeleteProgram(GLuint program);
+	void GL_APIENTRY DeleteQueriesEXT(GLsizei n, const GLuint *ids);
+	void GL_APIENTRY DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers);
+	void GL_APIENTRY DeleteShader(GLuint shader);
+	void GL_APIENTRY DeleteTextures(GLsizei n, const GLuint* textures);
+	void GL_APIENTRY DepthFunc(GLenum func);
+	void GL_APIENTRY DepthMask(GLboolean flag);
+	void GL_APIENTRY DepthRangef(GLclampf zNear, GLclampf zFar);
+	void GL_APIENTRY DetachShader(GLuint program, GLuint shader);
+	void GL_APIENTRY Disable(GLenum cap);
+	void GL_APIENTRY DisableVertexAttribArray(GLuint index);
+	void GL_APIENTRY DrawArrays(GLenum mode, GLint first, GLsizei count);
+	void GL_APIENTRY DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+	void GL_APIENTRY DrawArraysInstancedEXT(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
+	void GL_APIENTRY DrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
+	void GL_APIENTRY VertexAttribDivisorEXT(GLuint index, GLuint divisor);
+	void GL_APIENTRY DrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
+	void GL_APIENTRY DrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
+	void GL_APIENTRY VertexAttribDivisorANGLE(GLuint index, GLuint divisor);
+	void GL_APIENTRY Enable(GLenum cap);
+	void GL_APIENTRY EnableVertexAttribArray(GLuint index);
+	void GL_APIENTRY EndQueryEXT(GLenum target);
+	void GL_APIENTRY FinishFenceNV(GLuint fence);
+	void GL_APIENTRY Finish(void);
+	void GL_APIENTRY Flush(void);
+	void GL_APIENTRY FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void GL_APIENTRY FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void GL_APIENTRY FrontFace(GLenum mode);
+	void GL_APIENTRY GenBuffers(GLsizei n, GLuint* buffers);
+	void GL_APIENTRY GenerateMipmap(GLenum target);
+	void GL_APIENTRY GenFencesNV(GLsizei n, GLuint* fences);
+	void GL_APIENTRY GenFramebuffers(GLsizei n, GLuint* framebuffers);
+	void GL_APIENTRY GenQueriesEXT(GLsizei n, GLuint* ids);
+	void GL_APIENTRY GenRenderbuffers(GLsizei n, GLuint* renderbuffers);
+	void GL_APIENTRY GenTextures(GLsizei n, GLuint* textures);
+	void GL_APIENTRY GetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+	void GL_APIENTRY GetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+	void GL_APIENTRY GetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
+	int GL_APIENTRY GetAttribLocation(GLuint program, const GLchar* name);
+	void GL_APIENTRY GetBooleanv(GLenum pname, GLboolean* params);
+	void GL_APIENTRY GetBufferParameteriv(GLenum target, GLenum pname, GLint* params);
+	GLenum GL_APIENTRY GetError(void);
+	void GL_APIENTRY GetFenceivNV(GLuint fence, GLenum pname, GLint *params);
+	void GL_APIENTRY GetFloatv(GLenum pname, GLfloat* params);
+	void GL_APIENTRY GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	GLenum GL_APIENTRY GetGraphicsResetStatusEXT(void);
+	void GL_APIENTRY GetIntegerv(GLenum pname, GLint* params);
+	void GL_APIENTRY GetProgramiv(GLuint program, GLenum pname, GLint* params);
+	void GL_APIENTRY GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+	void GL_APIENTRY GetQueryivEXT(GLenum target, GLenum pname, GLint *params);
+	void GL_APIENTRY GetQueryObjectuivEXT(GLuint name, GLenum pname, GLuint *params);
+	void GL_APIENTRY GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params);
+	void GL_APIENTRY GetShaderiv(GLuint shader, GLenum pname, GLint* params);
+	void GL_APIENTRY GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+	void GL_APIENTRY GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
+	void GL_APIENTRY GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
+	const GLubyte* GL_APIENTRY GetString(GLenum name);
+	void GL_APIENTRY GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);
+	void GL_APIENTRY GetTexParameteriv(GLenum target, GLenum pname, GLint* params);
+	void GL_APIENTRY GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
+	void GL_APIENTRY GetUniformfv(GLuint program, GLint location, GLfloat* params);
+	void GL_APIENTRY GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* params);
+	void GL_APIENTRY GetUniformiv(GLuint program, GLint location, GLint* params);
+	int GL_APIENTRY GetUniformLocation(GLuint program, const GLchar* name);
+	void GL_APIENTRY GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params);
+	void GL_APIENTRY GetVertexAttribiv(GLuint index, GLenum pname, GLint* params);
+	void GL_APIENTRY GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer);
+	void GL_APIENTRY Hint(GLenum target, GLenum mode);
+	GLboolean GL_APIENTRY IsBuffer(GLuint buffer);
+	GLboolean GL_APIENTRY IsEnabled(GLenum cap);
+	GLboolean GL_APIENTRY IsFenceNV(GLuint fence);
+	GLboolean GL_APIENTRY IsFramebuffer(GLuint framebuffer);
+	GLboolean GL_APIENTRY IsProgram(GLuint program);
+	GLboolean GL_APIENTRY IsQueryEXT(GLuint name);
+	GLboolean GL_APIENTRY IsRenderbuffer(GLuint renderbuffer);
+	GLboolean GL_APIENTRY IsShader(GLuint shader);
+	GLboolean GL_APIENTRY IsTexture(GLuint texture);
+	void GL_APIENTRY LineWidth(GLfloat width);
+	void GL_APIENTRY LinkProgram(GLuint program);
+	void GL_APIENTRY PixelStorei(GLenum pname, GLint param);
+	void GL_APIENTRY PolygonOffset(GLfloat factor, GLfloat units);
+	void GL_APIENTRY ReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
+	                                GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
+	void GL_APIENTRY ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+	void GL_APIENTRY ReleaseShaderCompiler(void);
+	void GL_APIENTRY RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+	void GL_APIENTRY RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+	void GL_APIENTRY RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void GL_APIENTRY SampleCoverage(GLclampf value, GLboolean invert);
+	void GL_APIENTRY SetFenceNV(GLuint fence, GLenum condition);
+	void GL_APIENTRY Scissor(GLint x, GLint y, GLsizei width, GLsizei height);
+	void GL_APIENTRY ShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
+	void GL_APIENTRY ShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length);
+	void GL_APIENTRY StencilFunc(GLenum func, GLint ref, GLuint mask);
+	void GL_APIENTRY StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
+	void GL_APIENTRY StencilMask(GLuint mask);
+	void GL_APIENTRY StencilMaskSeparate(GLenum face, GLuint mask);
+	void GL_APIENTRY StencilOp(GLenum fail, GLenum zfail, GLenum zpass);
+	void GL_APIENTRY StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
+	GLboolean GL_APIENTRY TestFenceNV(GLuint fence);
+	void GL_APIENTRY TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+	                            GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void GL_APIENTRY TexParameterf(GLenum target, GLenum pname, GLfloat param);
+	void GL_APIENTRY TexParameterfv(GLenum target, GLenum pname, const GLfloat* params);
+	void GL_APIENTRY TexParameteri(GLenum target, GLenum pname, GLint param);
+	void GL_APIENTRY TexParameteriv(GLenum target, GLenum pname, const GLint* params);
+	void GL_APIENTRY TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+	                               GLenum format, GLenum type, const GLvoid* pixels);
+	void GL_APIENTRY Uniform1f(GLint location, GLfloat x);
+	void GL_APIENTRY Uniform1fv(GLint location, GLsizei count, const GLfloat* v);
+	void GL_APIENTRY Uniform1i(GLint location, GLint x);
+	void GL_APIENTRY Uniform1iv(GLint location, GLsizei count, const GLint* v);
+	void GL_APIENTRY Uniform2f(GLint location, GLfloat x, GLfloat y);
+	void GL_APIENTRY Uniform2fv(GLint location, GLsizei count, const GLfloat* v);
+	void GL_APIENTRY Uniform2i(GLint location, GLint x, GLint y);
+	void GL_APIENTRY Uniform2iv(GLint location, GLsizei count, const GLint* v);
+	void GL_APIENTRY Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z);
+	void GL_APIENTRY Uniform3fv(GLint location, GLsizei count, const GLfloat* v);
+	void GL_APIENTRY Uniform3i(GLint location, GLint x, GLint y, GLint z);
+	void GL_APIENTRY Uniform3iv(GLint location, GLsizei count, const GLint* v);
+	void GL_APIENTRY Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+	void GL_APIENTRY Uniform4fv(GLint location, GLsizei count, const GLfloat* v);
+	void GL_APIENTRY Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w);
+	void GL_APIENTRY Uniform4iv(GLint location, GLsizei count, const GLint* v);
+	void GL_APIENTRY UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void GL_APIENTRY UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void GL_APIENTRY UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void GL_APIENTRY UseProgram(GLuint program);
+	void GL_APIENTRY ValidateProgram(GLuint program);
+	void GL_APIENTRY VertexAttrib1f(GLuint index, GLfloat x);
+	void GL_APIENTRY VertexAttrib1fv(GLuint index, const GLfloat* values);
+	void GL_APIENTRY VertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
+	void GL_APIENTRY VertexAttrib2fv(GLuint index, const GLfloat* values);
+	void GL_APIENTRY VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
+	void GL_APIENTRY VertexAttrib3fv(GLuint index, const GLfloat* values);
+	void GL_APIENTRY VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+	void GL_APIENTRY VertexAttrib4fv(GLuint index, const GLfloat* values);
+	void GL_APIENTRY VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
+	void GL_APIENTRY Viewport(GLint x, GLint y, GLsizei width, GLsizei height);
+	void GL_APIENTRY BlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+	void GL_APIENTRY BlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+	                                      GLbitfield mask, GLenum filter);
+	void GL_APIENTRY TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
+	                               GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void GL_APIENTRY TexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+	void GL_APIENTRY CopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	void GL_APIENTRY CompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+	void GL_APIENTRY CompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+	void GL_APIENTRY FramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+	void GL_APIENTRY EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
+	void GL_APIENTRY EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
+	GLboolean GL_APIENTRY IsRenderbufferOES(GLuint renderbuffer);
+	void GL_APIENTRY BindRenderbufferOES(GLenum target, GLuint renderbuffer);
+	void GL_APIENTRY DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers);
+	void GL_APIENTRY GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers);
+	void GL_APIENTRY RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void GL_APIENTRY GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params);
+	GLboolean GL_APIENTRY IsFramebufferOES(GLuint framebuffer);
+	void GL_APIENTRY BindFramebufferOES(GLenum target, GLuint framebuffer);
+	void GL_APIENTRY DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers);
+	void GL_APIENTRY GenFramebuffersOES(GLsizei n, GLuint* framebuffers);
+	GLenum GL_APIENTRY CheckFramebufferStatusOES(GLenum target);
+	void GL_APIENTRY FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void GL_APIENTRY FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void GL_APIENTRY GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	void GL_APIENTRY GenerateMipmapOES(GLenum target);
+	void GL_APIENTRY DrawBuffersEXT(GLsizei n, const GLenum *bufs);
+	void GL_APIENTRY ReadBuffer(GLenum src);
+	void GL_APIENTRY DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
+	void GL_APIENTRY TexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *data);
+	void GL_APIENTRY TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+	void GL_APIENTRY CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	void GL_APIENTRY CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+	void GL_APIENTRY CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+	void GL_APIENTRY GenQueries(GLsizei n, GLuint *ids);
+	void GL_APIENTRY DeleteQueries(GLsizei n, const GLuint *ids);
+	GLboolean GL_APIENTRY IsQuery(GLuint id);
+	void GL_APIENTRY BeginQuery(GLenum target, GLuint id);
+	void GL_APIENTRY EndQuery(GLenum target);
+	void GL_APIENTRY GetQueryiv(GLenum target, GLenum pname, GLint *params);
+	void GL_APIENTRY GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
+	GLboolean GL_APIENTRY UnmapBuffer(GLenum target);
+	void GL_APIENTRY GetBufferPointerv(GLenum target, GLenum pname, void **params);
+	void GL_APIENTRY DrawBuffers(GLsizei n, const GLenum *bufs);
+	void GL_APIENTRY UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+	void GL_APIENTRY UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+	void GL_APIENTRY UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+	void GL_APIENTRY UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+	void GL_APIENTRY UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+	void GL_APIENTRY UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+	void GL_APIENTRY BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+	void GL_APIENTRY FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+	void *GL_APIENTRY MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+	void GL_APIENTRY FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
+	void GL_APIENTRY BindVertexArray(GLuint array);
+	void GL_APIENTRY BindVertexArrayOES(GLuint array);
+	void GL_APIENTRY DeleteVertexArrays(GLsizei n, const GLuint *arrays);
+	void GL_APIENTRY DeleteVertexArraysOES(GLsizei n, const GLuint *arrays);
+	void GL_APIENTRY GenVertexArrays(GLsizei n, GLuint *arrays);
+	void GL_APIENTRY GenVertexArraysOES(GLsizei n, GLuint *arrays);
+	GLboolean GL_APIENTRY IsVertexArray(GLuint array);
+	GLboolean GL_APIENTRY IsVertexArrayOES(GLuint array);
+	void GL_APIENTRY GetIntegeri_v(GLenum target, GLuint index, GLint *data);
+	void GL_APIENTRY BeginTransformFeedback(GLenum primitiveMode);
+	void GL_APIENTRY EndTransformFeedback(void);
+	void GL_APIENTRY BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+	void GL_APIENTRY BindBufferBase(GLenum target, GLuint index, GLuint buffer);
+	void GL_APIENTRY TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
+	void GL_APIENTRY GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+	void GL_APIENTRY VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
+	void GL_APIENTRY GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
+	void GL_APIENTRY GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
+	void GL_APIENTRY VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
+	void GL_APIENTRY VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+	void GL_APIENTRY VertexAttribI4iv(GLuint index, const GLint *v);
+	void GL_APIENTRY VertexAttribI4uiv(GLuint index, const GLuint *v);
+	void GL_APIENTRY GetUniformuiv(GLuint program, GLint location, GLuint *params);
+	GLint GL_APIENTRY GetFragDataLocation(GLuint program, const GLchar *name);
+	void GL_APIENTRY Uniform1ui(GLint location, GLuint v0);
+	void GL_APIENTRY Uniform2ui(GLint location, GLuint v0, GLuint v1);
+	void GL_APIENTRY Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
+	void GL_APIENTRY Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+	void GL_APIENTRY Uniform1uiv(GLint location, GLsizei count, const GLuint *value);
+	void GL_APIENTRY Uniform2uiv(GLint location, GLsizei count, const GLuint *value);
+	void GL_APIENTRY Uniform3uiv(GLint location, GLsizei count, const GLuint *value);
+	void GL_APIENTRY Uniform4uiv(GLint location, GLsizei count, const GLuint *value);
+	void GL_APIENTRY ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
+	void GL_APIENTRY ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
+	void GL_APIENTRY ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
+	void GL_APIENTRY ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+	const GLubyte *GL_APIENTRY GetStringi(GLenum name, GLuint index);
+	void GL_APIENTRY CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+	void GL_APIENTRY GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
+	void GL_APIENTRY GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
+	GLuint GL_APIENTRY GetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName);
+	void GL_APIENTRY GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
+	void GL_APIENTRY GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
+	void GL_APIENTRY UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+	void GL_APIENTRY DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
+	void GL_APIENTRY DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
+	GLsync GL_APIENTRY FenceSync(GLenum condition, GLbitfield flags);
+	GLboolean GL_APIENTRY IsSync(GLsync sync);
+	void GL_APIENTRY DeleteSync(GLsync sync);
+	GLenum GL_APIENTRY ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
+	void GL_APIENTRY WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
+	void GL_APIENTRY GetInteger64v(GLenum pname, GLint64 *data);
+	void GL_APIENTRY GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
+	void GL_APIENTRY GetInteger64i_v(GLenum target, GLuint index, GLint64 *data);
+	void GL_APIENTRY GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
+	void GL_APIENTRY GenSamplers(GLsizei count, GLuint *samplers);
+	void GL_APIENTRY DeleteSamplers(GLsizei count, const GLuint *samplers);
+	GLboolean GL_APIENTRY IsSampler(GLuint sampler);
+	void GL_APIENTRY BindSampler(GLuint unit, GLuint sampler);
+	void GL_APIENTRY SamplerParameteri(GLuint sampler, GLenum pname, GLint param);
+	void GL_APIENTRY SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param);
+	void GL_APIENTRY SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
+	void GL_APIENTRY SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param);
+	void GL_APIENTRY GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params);
+	void GL_APIENTRY GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params);
+	void GL_APIENTRY VertexAttribDivisor(GLuint index, GLuint divisor);
+	void GL_APIENTRY BindTransformFeedback(GLenum target, GLuint id);
+	void GL_APIENTRY DeleteTransformFeedbacks(GLsizei n, const GLuint *ids);
+	void GL_APIENTRY GenTransformFeedbacks(GLsizei n, GLuint *ids);
+	GLboolean GL_APIENTRY IsTransformFeedback(GLuint id);
+	void GL_APIENTRY PauseTransformFeedback(void);
+	void GL_APIENTRY ResumeTransformFeedback(void);
+	void GL_APIENTRY GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
+	void GL_APIENTRY ProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
+	void GL_APIENTRY ProgramParameteri(GLuint program, GLenum pname, GLint value);
+	void GL_APIENTRY InvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments);
+	void GL_APIENTRY InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+	void GL_APIENTRY TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+	void GL_APIENTRY TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+	void GL_APIENTRY GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
 }
 
 #endif   // LIBGLESV2_ENTRY_POINTS_H_
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 75f4d06..acaf6b2 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -57,7 +57,7 @@
 
 using namespace es2;
 
-void ActiveTexture(GLenum texture)
+void GL_APIENTRY ActiveTexture(GLenum texture)
 {
 	TRACE("(GLenum texture = 0x%X)", texture);
 
@@ -74,7 +74,7 @@
 	}
 }
 
-void AttachShader(GLuint program, GLuint shader)
+void GL_APIENTRY AttachShader(GLuint program, GLuint shader)
 {
 	TRACE("(GLuint program = %d, GLuint shader = %d)", program, shader);
 
@@ -116,7 +116,7 @@
 	}
 }
 
-void BeginQueryEXT(GLenum target, GLuint name)
+void GL_APIENTRY BeginQueryEXT(GLenum target, GLuint name)
 {
 	TRACE("(GLenum target = 0x%X, GLuint name = %d)", target, name);
 
@@ -142,7 +142,7 @@
 	}
 }
 
-void BindAttribLocation(GLuint program, GLuint index, const GLchar* name)
+void GL_APIENTRY BindAttribLocation(GLuint program, GLuint index, const GLchar* name)
 {
 	TRACE("(GLuint program = %d, GLuint index = %d, const GLchar* name = %s)", program, index, name);
 
@@ -178,7 +178,7 @@
 	}
 }
 
-void BindBuffer(GLenum target, GLuint buffer)
+void GL_APIENTRY BindBuffer(GLenum target, GLuint buffer)
 {
 	TRACE("(GLenum target = 0x%X, GLuint buffer = %d)", target, buffer);
 
@@ -218,7 +218,7 @@
 	}
 }
 
-void BindFramebuffer(GLenum target, GLuint framebuffer)
+void GL_APIENTRY BindFramebuffer(GLenum target, GLuint framebuffer)
 {
 	TRACE("(GLenum target = 0x%X, GLuint framebuffer = %d)", target, framebuffer);
 
@@ -243,7 +243,7 @@
 	}
 }
 
-void BindRenderbuffer(GLenum target, GLuint renderbuffer)
+void GL_APIENTRY BindRenderbuffer(GLenum target, GLuint renderbuffer)
 {
 	TRACE("(GLenum target = 0x%X, GLuint renderbuffer = %d)", target, renderbuffer);
 
@@ -264,7 +264,7 @@
 	}
 }
 
-void BindTexture(GLenum target, GLuint texture)
+void GL_APIENTRY BindTexture(GLenum target, GLuint texture)
 {
 	TRACE("(GLenum target = 0x%X, GLuint texture = %d)", target, texture);
 
@@ -305,7 +305,7 @@
 	}
 }
 
-void BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+void GL_APIENTRY BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
 {
 	TRACE("(GLclampf red = %f, GLclampf green = %f, GLclampf blue = %f, GLclampf alpha = %f)",
 		red, green, blue, alpha);
@@ -318,7 +318,7 @@
 	}
 }
 
-void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
+void GL_APIENTRY BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
 {
 	TRACE("(GLenum modeRGB = 0x%X, GLenum modeAlpha = 0x%X)", modeRGB, modeAlpha);
 
@@ -354,12 +354,12 @@
 	}
 }
 
-void BlendEquation(GLenum mode)
+void GL_APIENTRY BlendEquation(GLenum mode)
 {
 	BlendEquationSeparate(mode, mode);
 }
 
-void BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+void GL_APIENTRY BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
 {
 	TRACE("(GLenum srcRGB = 0x%X, GLenum dstRGB = 0x%X, GLenum srcAlpha = 0x%X, GLenum dstAlpha = 0x%X)",
 	      srcRGB, dstRGB, srcAlpha, dstAlpha);
@@ -462,12 +462,12 @@
 	}
 }
 
-void BlendFunc(GLenum sfactor, GLenum dfactor)
+void GL_APIENTRY BlendFunc(GLenum sfactor, GLenum dfactor)
 {
 	BlendFuncSeparate(sfactor, dfactor, sfactor, dfactor);
 }
 
-void BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+void GL_APIENTRY BufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
 {
 	size = static_cast<GLint>(size);   // Work around issues with some 64-bit applications
 
@@ -516,7 +516,7 @@
 	}
 }
 
-void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
+void GL_APIENTRY BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
 {
 	size = static_cast<GLint>(size);   // Work around issues with some 64-bit applications
 	offset = static_cast<GLint>(offset);
@@ -560,7 +560,7 @@
 	}
 }
 
-GLenum CheckFramebufferStatus(GLenum target)
+GLenum GL_APIENTRY CheckFramebufferStatus(GLenum target)
 {
 	TRACE("(GLenum target = 0x%X)", target);
 
@@ -594,7 +594,7 @@
 	return 0;
 }
 
-void Clear(GLbitfield mask)
+void GL_APIENTRY Clear(GLbitfield mask)
 {
 	TRACE("(GLbitfield mask = %X)", mask);
 
@@ -611,7 +611,7 @@
 	}
 }
 
-void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+void GL_APIENTRY ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
 {
 	TRACE("(GLclampf red = %f, GLclampf green = %f, GLclampf blue = %f, GLclampf alpha = %f)",
 	      red, green, blue, alpha);
@@ -624,7 +624,7 @@
 	}
 }
 
-void ClearDepthf(GLclampf depth)
+void GL_APIENTRY ClearDepthf(GLclampf depth)
 {
 	TRACE("(GLclampf depth = %f)", depth);
 
@@ -636,7 +636,7 @@
 	}
 }
 
-void ClearStencil(GLint s)
+void GL_APIENTRY ClearStencil(GLint s)
 {
 	TRACE("(GLint s = %d)", s);
 
@@ -648,7 +648,7 @@
 	}
 }
 
-void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+void GL_APIENTRY ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
 {
 	TRACE("(GLboolean red = %d, GLboolean green = %d, GLboolean blue = %d, GLboolean alpha = %d)",
 	      red, green, blue, alpha);
@@ -661,7 +661,7 @@
 	}
 }
 
-void CompileShader(GLuint shader)
+void GL_APIENTRY CompileShader(GLuint shader)
 {
 	TRACE("(GLuint shader = %d)", shader);
 
@@ -687,8 +687,8 @@
 	}
 }
 
-void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
-                          GLint border, GLsizei imageSize, const GLvoid* data)
+void GL_APIENTRY CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
+                                      GLint border, GLsizei imageSize, const GLvoid* data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = %d, "
 	      "GLsizei height = %d, GLint border = %d, GLsizei imageSize = %d, const GLvoid* data = %p)",
@@ -786,8 +786,8 @@
 	}
 }
 
-void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-                             GLenum format, GLsizei imageSize, const GLvoid* data)
+void GL_APIENTRY CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+                                         GLenum format, GLsizei imageSize, const GLvoid* data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLsizei width = %d, GLsizei height = %d, GLenum format = 0x%X, "
@@ -863,7 +863,7 @@
 	}
 }
 
-void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+void GL_APIENTRY CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, "
 	      "GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, GLint border = %d)",
@@ -1011,7 +1011,7 @@
 	}
 }
 
-void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)",
@@ -1077,7 +1077,7 @@
 	}
 }
 
-GLuint CreateProgram(void)
+GLuint GL_APIENTRY CreateProgram(void)
 {
 	TRACE("()");
 
@@ -1091,7 +1091,7 @@
 	return 0;
 }
 
-GLuint CreateShader(GLenum type)
+GLuint GL_APIENTRY CreateShader(GLenum type)
 {
 	TRACE("(GLenum type = 0x%X)", type);
 
@@ -1112,7 +1112,7 @@
 	return 0;
 }
 
-void CullFace(GLenum mode)
+void GL_APIENTRY CullFace(GLenum mode)
 {
 	TRACE("(GLenum mode = 0x%X)", mode);
 
@@ -1135,7 +1135,7 @@
 	}
 }
 
-void DeleteBuffers(GLsizei n, const GLuint* buffers)
+void GL_APIENTRY DeleteBuffers(GLsizei n, const GLuint* buffers)
 {
 	TRACE("(GLsizei n = %d, const GLuint* buffers = %p)", n, buffers);
 
@@ -1155,7 +1155,7 @@
 	}
 }
 
-void DeleteFencesNV(GLsizei n, const GLuint* fences)
+void GL_APIENTRY DeleteFencesNV(GLsizei n, const GLuint* fences)
 {
 	TRACE("(GLsizei n = %d, const GLuint* fences = %p)", n, fences);
 
@@ -1175,7 +1175,7 @@
 	}
 }
 
-void DeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
+void GL_APIENTRY DeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
 {
 	TRACE("(GLsizei n = %d, const GLuint* framebuffers = %p)", n, framebuffers);
 
@@ -1198,7 +1198,7 @@
 	}
 }
 
-void DeleteProgram(GLuint program)
+void GL_APIENTRY DeleteProgram(GLuint program)
 {
 	TRACE("(GLuint program = %d)", program);
 
@@ -1227,7 +1227,7 @@
 	}
 }
 
-void DeleteQueriesEXT(GLsizei n, const GLuint *ids)
+void GL_APIENTRY DeleteQueriesEXT(GLsizei n, const GLuint *ids)
 {
 	TRACE("(GLsizei n = %d, const GLuint *ids = %p)", n, ids);
 
@@ -1247,7 +1247,7 @@
 	}
 }
 
-void DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
+void GL_APIENTRY DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
 {
 	TRACE("(GLsizei n = %d, const GLuint* renderbuffers = %p)", n, renderbuffers);
 
@@ -1267,7 +1267,7 @@
 	}
 }
 
-void DeleteShader(GLuint shader)
+void GL_APIENTRY DeleteShader(GLuint shader)
 {
 	TRACE("(GLuint shader = %d)", shader);
 
@@ -1296,7 +1296,7 @@
 	}
 }
 
-void DeleteTextures(GLsizei n, const GLuint* textures)
+void GL_APIENTRY DeleteTextures(GLsizei n, const GLuint* textures)
 {
 	TRACE("(GLsizei n = %d, const GLuint* textures = %p)", n, textures);
 
@@ -1319,7 +1319,7 @@
 	}
 }
 
-void DepthFunc(GLenum func)
+void GL_APIENTRY DepthFunc(GLenum func)
 {
 	TRACE("(GLenum func = 0x%X)", func);
 
@@ -1346,7 +1346,7 @@
 	}
 }
 
-void DepthMask(GLboolean flag)
+void GL_APIENTRY DepthMask(GLboolean flag)
 {
 	TRACE("(GLboolean flag = %d)", flag);
 
@@ -1358,7 +1358,7 @@
 	}
 }
 
-void DepthRangef(GLclampf zNear, GLclampf zFar)
+void GL_APIENTRY DepthRangef(GLclampf zNear, GLclampf zFar)
 {
 	TRACE("(GLclampf zNear = %f, GLclampf zFar = %f)", zNear, zFar);
 
@@ -1370,7 +1370,7 @@
 	}
 }
 
-void DetachShader(GLuint program, GLuint shader)
+void GL_APIENTRY DetachShader(GLuint program, GLuint shader)
 {
 	TRACE("(GLuint program = %d, GLuint shader = %d)", program, shader);
 
@@ -1416,7 +1416,7 @@
 	}
 }
 
-void Disable(GLenum cap)
+void GL_APIENTRY Disable(GLenum cap)
 {
 	TRACE("(GLenum cap = 0x%X)", cap);
 
@@ -1443,7 +1443,7 @@
 	}
 }
 
-void DisableVertexAttribArray(GLuint index)
+void GL_APIENTRY DisableVertexAttribArray(GLuint index)
 {
 	TRACE("(GLuint index = %d)", index);
 
@@ -1460,7 +1460,7 @@
 	}
 }
 
-void DrawArrays(GLenum mode, GLint first, GLsizei count)
+void GL_APIENTRY DrawArrays(GLenum mode, GLint first, GLsizei count)
 {
 	TRACE("(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d)", mode, first, count);
 
@@ -1497,7 +1497,7 @@
 	}
 }
 
-void DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
+void GL_APIENTRY DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
 {
 	TRACE("(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const GLvoid* indices = %p)",
 	      mode, count, type, indices);
@@ -1545,7 +1545,7 @@
 	}
 }
 
-void DrawArraysInstancedEXT(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
+void GL_APIENTRY DrawArraysInstancedEXT(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
 {
 	TRACE("(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d, GLsizei instanceCount = %d)",
 		mode, first, count, instanceCount);
@@ -1583,7 +1583,7 @@
 	}
 }
 
-void DrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount)
+void GL_APIENTRY DrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount)
 {
 	TRACE("(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const void *indices = %p, GLsizei instanceCount = %d)",
 		mode, count, type, indices, instanceCount);
@@ -1631,7 +1631,7 @@
 	}
 }
 
-void VertexAttribDivisorEXT(GLuint index, GLuint divisor)
+void GL_APIENTRY VertexAttribDivisorEXT(GLuint index, GLuint divisor)
 {
 	TRACE("(GLuint index = %d, GLuint divisor = %d)", index, divisor);
 
@@ -1648,7 +1648,7 @@
 	}
 }
 
-void DrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
+void GL_APIENTRY DrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
 {
 	TRACE("(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d, GLsizei instanceCount = %d)",
 		mode, first, count, instanceCount);
@@ -1691,7 +1691,7 @@
 	}
 }
 
-void DrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount)
+void GL_APIENTRY DrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount)
 {
 	TRACE("(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const void *indices = %p, GLsizei instanceCount = %d)",
 		mode, count, type, indices, instanceCount);
@@ -1744,7 +1744,7 @@
 	}
 }
 
-void VertexAttribDivisorANGLE(GLuint index, GLuint divisor)
+void GL_APIENTRY VertexAttribDivisorANGLE(GLuint index, GLuint divisor)
 {
 	TRACE("(GLuint index = %d, GLuint divisor = %d)", index, divisor);
 
@@ -1761,7 +1761,7 @@
 	}
 }
 
-void Enable(GLenum cap)
+void GL_APIENTRY Enable(GLenum cap)
 {
 	TRACE("(GLenum cap = 0x%X)", cap);
 
@@ -1788,7 +1788,7 @@
 	}
 }
 
-void EnableVertexAttribArray(GLuint index)
+void GL_APIENTRY EnableVertexAttribArray(GLuint index)
 {
 	TRACE("(GLuint index = %d)", index);
 
@@ -1805,7 +1805,7 @@
 	}
 }
 
-void EndQueryEXT(GLenum target)
+void GL_APIENTRY EndQueryEXT(GLenum target)
 {
 	TRACE("GLenum target = 0x%X)", target);
 
@@ -1826,7 +1826,7 @@
 	}
 }
 
-void FinishFenceNV(GLuint fence)
+void GL_APIENTRY FinishFenceNV(GLuint fence)
 {
 	TRACE("(GLuint fence = %d)", fence);
 
@@ -1845,7 +1845,7 @@
 	}
 }
 
-void Finish(void)
+void GL_APIENTRY Finish(void)
 {
 	TRACE("()");
 
@@ -1857,7 +1857,7 @@
 	}
 }
 
-void Flush(void)
+void GL_APIENTRY Flush(void)
 {
 	TRACE("()");
 
@@ -1869,7 +1869,7 @@
 	}
 }
 
-void FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+void GL_APIENTRY FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
 {
 	TRACE("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum renderbuffertarget = 0x%X, "
 	      "GLuint renderbuffer = %d)", target, attachment, renderbuffertarget, renderbuffer);
@@ -1943,7 +1943,7 @@
 	}
 }
 
-void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+void GL_APIENTRY FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
 {
 	TRACE("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum textarget = 0x%X, "
 	      "GLuint texture = %d, GLint level = %d)", target, attachment, textarget, texture, level);
@@ -2058,7 +2058,7 @@
 	}
 }
 
-void FrontFace(GLenum mode)
+void GL_APIENTRY FrontFace(GLenum mode)
 {
 	TRACE("(GLenum mode = 0x%X)", mode);
 
@@ -2080,7 +2080,7 @@
 	}
 }
 
-void GenBuffers(GLsizei n, GLuint* buffers)
+void GL_APIENTRY GenBuffers(GLsizei n, GLuint* buffers)
 {
 	TRACE("(GLsizei n = %d, GLuint* buffers = %p)", n, buffers);
 
@@ -2100,7 +2100,7 @@
 	}
 }
 
-void GenerateMipmap(GLenum target)
+void GL_APIENTRY GenerateMipmap(GLenum target)
 {
 	TRACE("(GLenum target = 0x%X)", target);
 
@@ -2141,7 +2141,7 @@
 	}
 }
 
-void GenFencesNV(GLsizei n, GLuint* fences)
+void GL_APIENTRY GenFencesNV(GLsizei n, GLuint* fences)
 {
 	TRACE("(GLsizei n = %d, GLuint* fences = %p)", n, fences);
 
@@ -2161,7 +2161,7 @@
 	}
 }
 
-void GenFramebuffers(GLsizei n, GLuint* framebuffers)
+void GL_APIENTRY GenFramebuffers(GLsizei n, GLuint* framebuffers)
 {
 	TRACE("(GLsizei n = %d, GLuint* framebuffers = %p)", n, framebuffers);
 
@@ -2181,7 +2181,7 @@
 	}
 }
 
-void GenQueriesEXT(GLsizei n, GLuint* ids)
+void GL_APIENTRY GenQueriesEXT(GLsizei n, GLuint* ids)
 {
 	TRACE("(GLsizei n = %d, GLuint* ids = %p)", n, ids);
 
@@ -2201,7 +2201,7 @@
 	}
 }
 
-void GenRenderbuffers(GLsizei n, GLuint* renderbuffers)
+void GL_APIENTRY GenRenderbuffers(GLsizei n, GLuint* renderbuffers)
 {
 	TRACE("(GLsizei n = %d, GLuint* renderbuffers = %p)", n, renderbuffers);
 
@@ -2221,7 +2221,7 @@
 	}
 }
 
-void GenTextures(GLsizei n, GLuint* textures)
+void GL_APIENTRY GenTextures(GLsizei n, GLuint* textures)
 {
 	TRACE("(GLsizei n = %d, GLuint* textures = %p)", n, textures);
 
@@ -2241,7 +2241,7 @@
 	}
 }
 
-void GetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
+void GL_APIENTRY GetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
 {
 	TRACE("(GLuint program = %d, GLuint index = %d, GLsizei bufsize = %d, GLsizei *length = %p, "
 	      "GLint *size = %p, GLenum *type = %p, GLchar *name = %p)",
@@ -2279,7 +2279,7 @@
 	}
 }
 
-void GetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+void GL_APIENTRY GetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
 {
 	TRACE("(GLuint program = %d, GLuint index = %d, GLsizei bufsize = %d, "
 	      "GLsizei* length = %p, GLint* size = %p, GLenum* type = %p, GLchar* name = %s)",
@@ -2317,7 +2317,7 @@
 	}
 }
 
-void GetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
+void GL_APIENTRY GetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
 {
 	TRACE("(GLuint program = %d, GLsizei maxcount = %d, GLsizei* count = %p, GLuint* shaders = %p)",
 	      program, maxcount, count, shaders);
@@ -2349,7 +2349,7 @@
 	}
 }
 
-int GetAttribLocation(GLuint program, const GLchar* name)
+int GL_APIENTRY GetAttribLocation(GLuint program, const GLchar* name)
 {
 	TRACE("(GLuint program = %d, const GLchar* name = %s)", program, name);
 
@@ -2382,7 +2382,7 @@
 	return -1;
 }
 
-void GetBooleanv(GLenum pname, GLboolean* params)
+void GL_APIENTRY GetBooleanv(GLenum pname, GLboolean* params)
 {
 	TRACE("(GLenum pname = 0x%X, GLboolean* params = %p)",  pname, params);
 
@@ -2438,7 +2438,7 @@
 	}
 }
 
-void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
+void GL_APIENTRY GetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = %p)", target, pname, params);
 
@@ -2484,7 +2484,7 @@
 	}
 }
 
-GLenum GetError(void)
+GLenum GL_APIENTRY GetError(void)
 {
 	TRACE("()");
 
@@ -2498,7 +2498,7 @@
 	return GL_NO_ERROR;
 }
 
-void GetFenceivNV(GLuint fence, GLenum pname, GLint *params)
+void GL_APIENTRY GetFenceivNV(GLuint fence, GLenum pname, GLint *params)
 {
 	TRACE("(GLuint fence = %d, GLenum pname = 0x%X, GLint *params = %p)", fence, pname, params);
 
@@ -2517,7 +2517,7 @@
 	}
 }
 
-void GetFloatv(GLenum pname, GLfloat* params)
+void GL_APIENTRY GetFloatv(GLenum pname, GLfloat* params)
 {
 	TRACE("(GLenum pname = 0x%X, GLfloat* params = %p)", pname, params);
 
@@ -2570,7 +2570,7 @@
 	}
 }
 
-void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
+void GL_APIENTRY GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum pname = 0x%X, GLint* params = %p)",
 	      target, attachment, pname, params);
@@ -2810,14 +2810,14 @@
 	}
 }
 
-GLenum GetGraphicsResetStatusEXT(void)
+GLenum GL_APIENTRY GetGraphicsResetStatusEXT(void)
 {
 	TRACE("()");
 
 	return GL_NO_ERROR;
 }
 
-void GetIntegerv(GLenum pname, GLint* params)
+void GL_APIENTRY GetIntegerv(GLenum pname, GLint* params)
 {
 	TRACE("(GLenum pname = 0x%X, GLint* params = %p)", pname, params);
 
@@ -2895,7 +2895,7 @@
 	}
 }
 
-void GetProgramiv(GLuint program, GLenum pname, GLint* params)
+void GL_APIENTRY GetProgramiv(GLuint program, GLenum pname, GLint* params)
 {
 	TRACE("(GLuint program = %d, GLenum pname = 0x%X, GLint* params = %p)", program, pname, params);
 
@@ -2973,7 +2973,7 @@
 	}
 }
 
-void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+void GL_APIENTRY GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
 {
 	TRACE("(GLuint program = %d, GLsizei bufsize = %d, GLsizei* length = %p, GLchar* infolog = %p)",
 	      program, bufsize, length, infolog);
@@ -3005,7 +3005,7 @@
 	}
 }
 
-void GetQueryivEXT(GLenum target, GLenum pname, GLint *params)
+void GL_APIENTRY GetQueryivEXT(GLenum target, GLenum pname, GLint *params)
 {
 	TRACE("GLenum target = 0x%X, GLenum pname = 0x%X, GLint *params = %p)", target, pname, params);
 
@@ -3025,7 +3025,7 @@
 	}
 }
 
-void GetQueryObjectuivEXT(GLuint name, GLenum pname, GLuint *params)
+void GL_APIENTRY GetQueryObjectuivEXT(GLuint name, GLenum pname, GLuint *params)
 {
 	TRACE("(GLuint name = %d, GLenum pname = 0x%X, GLuint *params = %p)", name, pname, params);
 
@@ -3068,7 +3068,7 @@
 	}
 }
 
-void GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
+void GL_APIENTRY GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = %p)", target, pname, params);
 
@@ -3111,7 +3111,7 @@
 	}
 }
 
-void GetShaderiv(GLuint shader, GLenum pname, GLint* params)
+void GL_APIENTRY GetShaderiv(GLuint shader, GLenum pname, GLint* params)
 {
 	TRACE("(GLuint shader = %d, GLenum pname = %d, GLint* params = %p)", shader, pname, params);
 
@@ -3156,7 +3156,7 @@
 	}
 }
 
-void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+void GL_APIENTRY GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
 {
 	TRACE("(GLuint shader = %d, GLsizei bufsize = %d, GLsizei* length = %p, GLchar* infolog = %p)",
 	      shader, bufsize, length, infolog);
@@ -3188,7 +3188,7 @@
 	}
 }
 
-void GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
+void GL_APIENTRY GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
 {
 	TRACE("(GLenum shadertype = 0x%X, GLenum precisiontype = 0x%X, GLint* range = %p, GLint* precision = %p)",
 	      shadertype, precisiontype, range, precision);
@@ -3225,7 +3225,7 @@
 	}
 }
 
-void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
+void GL_APIENTRY GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
 {
 	TRACE("(GLuint shader = %d, GLsizei bufsize = %d, GLsizei* length = %p, GLchar* source = %p)",
 	      shader, bufsize, length, source);
@@ -3257,7 +3257,7 @@
 	}
 }
 
-const GLubyte* GetString(GLenum name)
+const GLubyte* GL_APIENTRY GetString(GLenum name)
 {
 	TRACE("(GLenum name = 0x%X)", name);
 
@@ -3281,7 +3281,7 @@
 	}
 }
 
-void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
+void GL_APIENTRY GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLfloat* params = %p)", target, pname, params);
 
@@ -3361,7 +3361,7 @@
 	}
 }
 
-void GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
+void GL_APIENTRY GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint* params = %p)", target, pname, params);
 
@@ -3441,7 +3441,7 @@
 	}
 }
 
-void GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
+void GL_APIENTRY GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
 {
 	TRACE("(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLfloat* params = %p)",
 	      program, location, bufSize, params);
@@ -3481,7 +3481,7 @@
 	}
 }
 
-void GetUniformfv(GLuint program, GLint location, GLfloat* params)
+void GL_APIENTRY GetUniformfv(GLuint program, GLint location, GLfloat* params)
 {
 	TRACE("(GLuint program = %d, GLint location = %d, GLfloat* params = %p)", program, location, params);
 
@@ -3515,7 +3515,7 @@
 	}
 }
 
-void GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* params)
+void GL_APIENTRY GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* params)
 {
 	TRACE("(GLuint program = %d, GLint location = %d, GLsizei bufSize = %d, GLint* params = %p)",
 	      program, location, bufSize, params);
@@ -3555,7 +3555,7 @@
 	}
 }
 
-void GetUniformiv(GLuint program, GLint location, GLint* params)
+void GL_APIENTRY GetUniformiv(GLuint program, GLint location, GLint* params)
 {
 	TRACE("(GLuint program = %d, GLint location = %d, GLint* params = %p)", program, location, params);
 
@@ -3589,7 +3589,7 @@
 	}
 }
 
-int GetUniformLocation(GLuint program, const GLchar* name)
+int GL_APIENTRY GetUniformLocation(GLuint program, const GLchar* name)
 {
 	TRACE("(GLuint program = %d, const GLchar* name = %s)", program, name);
 
@@ -3627,7 +3627,7 @@
 	return -1;
 }
 
-void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
+void GL_APIENTRY GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
 {
 	TRACE("(GLuint index = %d, GLenum pname = 0x%X, GLfloat* params = %p)", index, pname, params);
 
@@ -3680,7 +3680,7 @@
 	}
 }
 
-void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
+void GL_APIENTRY GetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
 {
 	TRACE("(GLuint index = %d, GLenum pname = 0x%X, GLint* params = %p)", index, pname, params);
 
@@ -3734,7 +3734,7 @@
 	}
 }
 
-void GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer)
+void GL_APIENTRY GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer)
 {
 	TRACE("(GLuint index = %d, GLenum pname = 0x%X, GLvoid** pointer = %p)", index, pname, pointer);
 
@@ -3756,7 +3756,7 @@
 	}
 }
 
-void Hint(GLenum target, GLenum mode)
+void GL_APIENTRY Hint(GLenum target, GLenum mode)
 {
 	TRACE("(GLenum target = 0x%X, GLenum mode = 0x%X)", target, mode);
 
@@ -3791,7 +3791,7 @@
 	}
 }
 
-GLboolean IsBuffer(GLuint buffer)
+GLboolean GL_APIENTRY IsBuffer(GLuint buffer)
 {
 	TRACE("(GLuint buffer = %d)", buffer);
 
@@ -3810,7 +3810,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsEnabled(GLenum cap)
+GLboolean GL_APIENTRY IsEnabled(GLenum cap)
 {
 	TRACE("(GLenum cap = 0x%X)", cap);
 
@@ -3839,7 +3839,7 @@
 	return false;
 }
 
-GLboolean IsFenceNV(GLuint fence)
+GLboolean GL_APIENTRY IsFenceNV(GLuint fence)
 {
 	TRACE("(GLuint fence = %d)", fence);
 
@@ -3860,7 +3860,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsFramebuffer(GLuint framebuffer)
+GLboolean GL_APIENTRY IsFramebuffer(GLuint framebuffer)
 {
 	TRACE("(GLuint framebuffer = %d)", framebuffer);
 
@@ -3879,7 +3879,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsProgram(GLuint program)
+GLboolean GL_APIENTRY IsProgram(GLuint program)
 {
 	TRACE("(GLuint program = %d)", program);
 
@@ -3898,7 +3898,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsQueryEXT(GLuint name)
+GLboolean GL_APIENTRY IsQueryEXT(GLuint name)
 {
 	TRACE("(GLuint name = %d)", name);
 
@@ -3922,7 +3922,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsRenderbuffer(GLuint renderbuffer)
+GLboolean GL_APIENTRY IsRenderbuffer(GLuint renderbuffer)
 {
 	TRACE("(GLuint renderbuffer = %d)", renderbuffer);
 
@@ -3941,7 +3941,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsShader(GLuint shader)
+GLboolean GL_APIENTRY IsShader(GLuint shader)
 {
 	TRACE("(GLuint shader = %d)", shader);
 
@@ -3960,7 +3960,7 @@
 	return GL_FALSE;
 }
 
-GLboolean IsTexture(GLuint texture)
+GLboolean GL_APIENTRY IsTexture(GLuint texture)
 {
 	TRACE("(GLuint texture = %d)", texture);
 
@@ -3979,7 +3979,7 @@
 	return GL_FALSE;
 }
 
-void LineWidth(GLfloat width)
+void GL_APIENTRY LineWidth(GLfloat width)
 {
 	TRACE("(GLfloat width = %f)", width);
 
@@ -3996,7 +3996,7 @@
 	}
 }
 
-void LinkProgram(GLuint program)
+void GL_APIENTRY LinkProgram(GLuint program)
 {
 	TRACE("(GLuint program = %d)", program);
 
@@ -4031,7 +4031,7 @@
 	}
 }
 
-void PixelStorei(GLenum pname, GLint param)
+void GL_APIENTRY PixelStorei(GLenum pname, GLint param)
 {
 	TRACE("(GLenum pname = 0x%X, GLint param = %d)", pname, param);
 
@@ -4117,7 +4117,7 @@
 	}
 }
 
-void PolygonOffset(GLfloat factor, GLfloat units)
+void GL_APIENTRY PolygonOffset(GLfloat factor, GLfloat units)
 {
 	TRACE("(GLfloat factor = %f, GLfloat units = %f)", factor, units);
 
@@ -4129,8 +4129,8 @@
 	}
 }
 
-void ReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
-                    GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)
+void GL_APIENTRY ReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height,
+                                GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)
 {
 	TRACE("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, "
 	      "GLenum format = 0x%X, GLenum type = 0x%X, GLsizei bufSize = 0x%d, GLvoid *data = %p)",
@@ -4149,7 +4149,7 @@
 	}
 }
 
-void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
+void GL_APIENTRY ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
 {
 	TRACE("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d, "
 	      "GLenum format = 0x%X, GLenum type = 0x%X, GLvoid* pixels = %p)",
@@ -4168,14 +4168,14 @@
 	}
 }
 
-void ReleaseShaderCompiler(void)
+void GL_APIENTRY ReleaseShaderCompiler(void)
 {
 	TRACE("()");
 
 	es2::Shader::releaseCompiler();
 }
 
-void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+void GL_APIENTRY RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
 {
 	TRACE("(GLenum target = 0x%X, GLsizei samples = %d, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d)",
 	      target, samples, internalformat, width, height);
@@ -4231,17 +4231,17 @@
 	}
 }
 
-void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+void GL_APIENTRY RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
 {
 	RenderbufferStorageMultisample(target, samples, internalformat, width, height);
 }
 
-void RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+void GL_APIENTRY RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
 {
 	RenderbufferStorageMultisample(target, 0, internalformat, width, height);
 }
 
-void SampleCoverage(GLclampf value, GLboolean invert)
+void GL_APIENTRY SampleCoverage(GLclampf value, GLboolean invert)
 {
 	TRACE("(GLclampf value = %f, GLboolean invert = %d)", value, invert);
 
@@ -4253,7 +4253,7 @@
 	}
 }
 
-void SetFenceNV(GLuint fence, GLenum condition)
+void GL_APIENTRY SetFenceNV(GLuint fence, GLenum condition)
 {
 	TRACE("(GLuint fence = %d, GLenum condition = 0x%X)", fence, condition);
 
@@ -4277,7 +4277,7 @@
 	}
 }
 
-void Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)", x, y, width, height);
 
@@ -4294,7 +4294,7 @@
 	}
 }
 
-void ShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
+void GL_APIENTRY ShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
 {
 	TRACE("(GLsizei n = %d, const GLuint* shaders = %p, GLenum binaryformat = 0x%X, "
 	      "const GLvoid* binary = %p, GLsizei length = %d)",
@@ -4304,7 +4304,7 @@
 	return error(GL_INVALID_ENUM);
 }
 
-void ShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length)
+void GL_APIENTRY ShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length)
 {
 	TRACE("(GLuint shader = %d, GLsizei count = %d, const GLchar** string = %p, const GLint* length = %p)",
 	      shader, count, string, length);
@@ -4336,7 +4336,7 @@
 	}
 }
 
-void StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
+void GL_APIENTRY StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
 {
 	TRACE("(GLenum face = 0x%X, GLenum func = 0x%X, GLint ref = %d, GLuint mask = %d)", face, func, ref, mask);
 
@@ -4381,12 +4381,12 @@
 	}
 }
 
-void StencilFunc(GLenum func, GLint ref, GLuint mask)
+void GL_APIENTRY StencilFunc(GLenum func, GLint ref, GLuint mask)
 {
 	StencilFuncSeparate(GL_FRONT_AND_BACK, func, ref, mask);
 }
 
-void StencilMaskSeparate(GLenum face, GLuint mask)
+void GL_APIENTRY StencilMaskSeparate(GLenum face, GLuint mask)
 {
 	TRACE("(GLenum face = 0x%X, GLuint mask = %d)", face, mask);
 
@@ -4416,12 +4416,12 @@
 	}
 }
 
-void StencilMask(GLuint mask)
+void GL_APIENTRY StencilMask(GLuint mask)
 {
 	StencilMaskSeparate(GL_FRONT_AND_BACK, mask);
 }
 
-void StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
+void GL_APIENTRY StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
 {
 	TRACE("(GLenum face = 0x%X, GLenum fail = 0x%X, GLenum zfail = 0x%X, GLenum zpas = 0x%Xs)",
 	      face, fail, zfail, zpass);
@@ -4497,12 +4497,12 @@
 	}
 }
 
-void StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
+void GL_APIENTRY StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
 {
 	StencilOpSeparate(GL_FRONT_AND_BACK, fail, zfail, zpass);
 }
 
-GLboolean TestFenceNV(GLuint fence)
+GLboolean GL_APIENTRY TestFenceNV(GLuint fence)
 {
 	TRACE("(GLuint fence = %d)", fence);
 
@@ -4523,8 +4523,8 @@
 	return GL_TRUE;
 }
 
-void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
-                GLint border, GLenum format, GLenum type, const GLvoid* data)
+void GL_APIENTRY TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+                            GLint border, GLenum format, GLenum type, const GLvoid* data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint internalformat = %d, GLsizei width = %d, GLsizei height = %d, "
 	      "GLint border = %d, GLenum format = 0x%X, GLenum type = 0x%X, const GLvoid* data =  %p)",
@@ -4626,7 +4626,7 @@
 	}
 }
 
-void TexParameterf(GLenum target, GLenum pname, GLfloat param)
+void GL_APIENTRY TexParameterf(GLenum target, GLenum pname, GLfloat param)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLfloat param = %f)", target, pname, param);
 
@@ -4745,12 +4745,12 @@
 	}
 }
 
-void TexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
+void GL_APIENTRY TexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
 {
 	TexParameterf(target, pname, *params);
 }
 
-void TexParameteri(GLenum target, GLenum pname, GLint param)
+void GL_APIENTRY TexParameteri(GLenum target, GLenum pname, GLint param)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint param = %d)", target, pname, param);
 
@@ -4873,13 +4873,13 @@
 	}
 }
 
-void TexParameteriv(GLenum target, GLenum pname, const GLint* params)
+void GL_APIENTRY TexParameteriv(GLenum target, GLenum pname, const GLint* params)
 {
 	TexParameteri(target, pname, *params);
 }
 
-void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-                   GLenum format, GLenum type, const GLvoid* data)
+void GL_APIENTRY TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+                               GLenum format, GLenum type, const GLvoid* data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLsizei width = %d, GLsizei height = %d, GLenum format = 0x%X, GLenum type = 0x%X, "
@@ -4950,7 +4950,7 @@
 	}
 }
 
-void Uniform1fv(GLint location, GLsizei count, const GLfloat* v)
+void GL_APIENTRY Uniform1fv(GLint location, GLsizei count, const GLfloat* v)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLfloat* v = %p)", location, count, v);
 
@@ -4982,12 +4982,12 @@
 	}
 }
 
-void Uniform1f(GLint location, GLfloat x)
+void GL_APIENTRY Uniform1f(GLint location, GLfloat x)
 {
 	Uniform1fv(location, 1, &x);
 }
 
-void Uniform1iv(GLint location, GLsizei count, const GLint* v)
+void GL_APIENTRY Uniform1iv(GLint location, GLsizei count, const GLint* v)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLint* v = %p)", location, count, v);
 
@@ -5019,12 +5019,12 @@
 	}
 }
 
-void Uniform1i(GLint location, GLint x)
+void GL_APIENTRY Uniform1i(GLint location, GLint x)
 {
 	Uniform1iv(location, 1, &x);
 }
 
-void Uniform2fv(GLint location, GLsizei count, const GLfloat* v)
+void GL_APIENTRY Uniform2fv(GLint location, GLsizei count, const GLfloat* v)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLfloat* v = %p)", location, count, v);
 
@@ -5056,14 +5056,14 @@
 	}
 }
 
-void Uniform2f(GLint location, GLfloat x, GLfloat y)
+void GL_APIENTRY Uniform2f(GLint location, GLfloat x, GLfloat y)
 {
 	GLfloat xy[2] = {x, y};
 
 	Uniform2fv(location, 1, (GLfloat*)&xy);
 }
 
-void Uniform2iv(GLint location, GLsizei count, const GLint* v)
+void GL_APIENTRY Uniform2iv(GLint location, GLsizei count, const GLint* v)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLint* v = %p)", location, count, v);
 
@@ -5095,14 +5095,14 @@
 	}
 }
 
-void Uniform2i(GLint location, GLint x, GLint y)
+void GL_APIENTRY Uniform2i(GLint location, GLint x, GLint y)
 {
 	GLint xy[4] = {x, y};
 
 	Uniform2iv(location, 1, (GLint*)&xy);
 }
 
-void Uniform3fv(GLint location, GLsizei count, const GLfloat* v)
+void GL_APIENTRY Uniform3fv(GLint location, GLsizei count, const GLfloat* v)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLfloat* v = %p)", location, count, v);
 
@@ -5134,14 +5134,14 @@
 	}
 }
 
-void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
+void GL_APIENTRY Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
 {
 	GLfloat xyz[3] = {x, y, z};
 
 	Uniform3fv(location, 1, (GLfloat*)&xyz);
 }
 
-void Uniform3iv(GLint location, GLsizei count, const GLint* v)
+void GL_APIENTRY Uniform3iv(GLint location, GLsizei count, const GLint* v)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLint* v = %p)", location, count, v);
 
@@ -5173,14 +5173,14 @@
 	}
 }
 
-void Uniform3i(GLint location, GLint x, GLint y, GLint z)
+void GL_APIENTRY Uniform3i(GLint location, GLint x, GLint y, GLint z)
 {
 	GLint xyz[3] = {x, y, z};
 
 	Uniform3iv(location, 1, (GLint*)&xyz);
 }
 
-void Uniform4fv(GLint location, GLsizei count, const GLfloat* v)
+void GL_APIENTRY Uniform4fv(GLint location, GLsizei count, const GLfloat* v)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLfloat* v = %p)", location, count, v);
 
@@ -5212,14 +5212,14 @@
 	}
 }
 
-void Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+void GL_APIENTRY Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
 	GLfloat xyzw[4] = {x, y, z, w};
 
 	Uniform4fv(location, 1, (GLfloat*)&xyzw);
 }
 
-void Uniform4iv(GLint location, GLsizei count, const GLint* v)
+void GL_APIENTRY Uniform4iv(GLint location, GLsizei count, const GLint* v)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLint* v = %p)", location, count, v);
 
@@ -5251,14 +5251,14 @@
 	}
 }
 
-void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
+void GL_APIENTRY Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
 {
 	GLint xyzw[4] = {x, y, z, w};
 
 	Uniform4iv(location, 1, (GLint*)&xyzw);
 }
 
-void UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+void GL_APIENTRY UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat* value = %p)",
 	      location, count, transpose, value);
@@ -5291,7 +5291,7 @@
 	}
 }
 
-void UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+void GL_APIENTRY UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat* value = %p)",
 	      location, count, transpose, value);
@@ -5324,7 +5324,7 @@
 	}
 }
 
-void UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+void GL_APIENTRY UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat* value = %p)",
 	      location, count, transpose, value);
@@ -5357,7 +5357,7 @@
 	}
 }
 
-void UseProgram(GLuint program)
+void GL_APIENTRY UseProgram(GLuint program)
 {
 	TRACE("(GLuint program = %d)", program);
 
@@ -5394,7 +5394,7 @@
 	}
 }
 
-void ValidateProgram(GLuint program)
+void GL_APIENTRY ValidateProgram(GLuint program)
 {
 	TRACE("(GLuint program = %d)", program);
 
@@ -5420,7 +5420,7 @@
 	}
 }
 
-void VertexAttrib1f(GLuint index, GLfloat x)
+void GL_APIENTRY VertexAttrib1f(GLuint index, GLfloat x)
 {
 	TRACE("(GLuint index = %d, GLfloat x = %f)", index, x);
 
@@ -5438,7 +5438,7 @@
 	}
 }
 
-void VertexAttrib1fv(GLuint index, const GLfloat* values)
+void GL_APIENTRY VertexAttrib1fv(GLuint index, const GLfloat* values)
 {
 	TRACE("(GLuint index = %d, const GLfloat* values = %p)", index, values);
 
@@ -5456,7 +5456,7 @@
 	}
 }
 
-void VertexAttrib2f(GLuint index, GLfloat x, GLfloat y)
+void GL_APIENTRY VertexAttrib2f(GLuint index, GLfloat x, GLfloat y)
 {
 	TRACE("(GLuint index = %d, GLfloat x = %f, GLfloat y = %f)", index, x, y);
 
@@ -5474,7 +5474,7 @@
 	}
 }
 
-void VertexAttrib2fv(GLuint index, const GLfloat* values)
+void GL_APIENTRY VertexAttrib2fv(GLuint index, const GLfloat* values)
 {
 	TRACE("(GLuint index = %d, const GLfloat* values = %p)", index, values);
 
@@ -5492,7 +5492,7 @@
 	}
 }
 
-void VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z)
+void GL_APIENTRY VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z)
 {
 	TRACE("(GLuint index = %d, GLfloat x = %f, GLfloat y = %f, GLfloat z = %f)", index, x, y, z);
 
@@ -5510,7 +5510,7 @@
 	}
 }
 
-void VertexAttrib3fv(GLuint index, const GLfloat* values)
+void GL_APIENTRY VertexAttrib3fv(GLuint index, const GLfloat* values)
 {
 	TRACE("(GLuint index = %d, const GLfloat* values = %p)", index, values);
 
@@ -5528,7 +5528,7 @@
 	}
 }
 
-void VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+void GL_APIENTRY VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
 	TRACE("(GLuint index = %d, GLfloat x = %f, GLfloat y = %f, GLfloat z = %f, GLfloat w = %f)", index, x, y, z, w);
 
@@ -5546,7 +5546,7 @@
 	}
 }
 
-void VertexAttrib4fv(GLuint index, const GLfloat* values)
+void GL_APIENTRY VertexAttrib4fv(GLuint index, const GLfloat* values)
 {
 	TRACE("(GLuint index = %d, const GLfloat* values = %p)", index, values);
 
@@ -5563,7 +5563,7 @@
 	}
 }
 
-void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
+void GL_APIENTRY VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
 {
 	TRACE("(GLuint index = %d, GLint size = %d, GLenum type = 0x%X, "
 	      "GLboolean normalized = %d, GLsizei stride = %d, const GLvoid* ptr = %p)",
@@ -5624,7 +5624,7 @@
 	}
 }
 
-void Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)", x, y, width, height);
 
@@ -5641,7 +5641,7 @@
 	}
 }
 
-static void BlitFramebufferSW(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter, bool allowPartialDepthStencilBlit)
+static void GL_APIENTRY BlitFramebufferSW(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter, bool allowPartialDepthStencilBlit)
 {
 	TRACE("(GLint srcX0 = %d, GLint srcY0 = %d, GLint srcX1 = %d, GLint srcY1 = %d, "
 	      "GLint dstX0 = %d, GLint dstY0 = %d, GLint dstX1 = %d, GLint dstY1 = %d, "
@@ -5675,13 +5675,13 @@
 	}
 }
 
-void BlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+void GL_APIENTRY BlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
 {
 	BlitFramebufferSW(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter, true);
 }
 
-void BlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
-                          GLbitfield mask, GLenum filter)
+void GL_APIENTRY BlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+                                      GLbitfield mask, GLenum filter)
 {
 	if(srcX1 - srcX0 != dstX1 - dstX0 || srcY1 - srcY0 != dstY1 - dstY0)
 	{
@@ -5692,8 +5692,8 @@
 	BlitFramebufferSW(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter, false);
 }
 
-void TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
-                   GLint border, GLenum format, GLenum type, const GLvoid* data)
+void GL_APIENTRY TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
+                               GLint border, GLenum format, GLenum type, const GLvoid* data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, "
 	      "GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, GLint border = %d, "
@@ -5765,7 +5765,7 @@
 	}
 }
 
-void TexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
+void GL_APIENTRY TexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLint zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, "
@@ -5812,7 +5812,7 @@
 	}
 }
 
-void CopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY CopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLint zoffset = %d, GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)",
@@ -5861,7 +5861,7 @@
 	}
 }
 
-void CompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+void GL_APIENTRY CompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = %d, "
 	      "GLsizei height = %d, GLsizei depth = %d, GLint border = %d, GLsizei imageSize = %d, const GLvoid* data = %p)",
@@ -5918,7 +5918,7 @@
 	}
 }
 
-void CompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+void GL_APIENTRY CompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLint zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, "
@@ -5974,7 +5974,7 @@
 	}
 }
 
-void FramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+void GL_APIENTRY FramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
 {
 	TRACE("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLenum textarget = 0x%X, "
 	      "GLuint texture = %d, GLint level = %d, GLint zoffset = %d)", target, attachment, textarget, texture, level, zoffset);
@@ -6063,7 +6063,7 @@
 	}
 }
 
-void EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
+void GL_APIENTRY EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
 {
 	if(egl::getClientVersion() == 1)
 	{
@@ -6104,89 +6104,89 @@
 	}
 }
 
-void EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
+void GL_APIENTRY EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
 {
 	TRACE("(GLenum target = 0x%X, GLeglImageOES image = %p)", target, image);
 
 	UNIMPLEMENTED();
 }
 
-GLboolean IsRenderbufferOES(GLuint renderbuffer)
+GLboolean GL_APIENTRY IsRenderbufferOES(GLuint renderbuffer)
 {
 	return IsRenderbuffer(renderbuffer);
 }
 
-void BindRenderbufferOES(GLenum target, GLuint renderbuffer)
+void GL_APIENTRY BindRenderbufferOES(GLenum target, GLuint renderbuffer)
 {
 	BindRenderbuffer(target, renderbuffer);
 }
 
-void DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers)
+void GL_APIENTRY DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers)
 {
 	DeleteRenderbuffers(n, renderbuffers);
 }
 
-void GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers)
+void GL_APIENTRY GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers)
 {
 	GenRenderbuffers(n, renderbuffers);
 }
 
-void RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+void GL_APIENTRY RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
 {
 	RenderbufferStorage(target, internalformat, width, height);
 }
 
-void GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params)
+void GL_APIENTRY GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params)
 {
 	GetRenderbufferParameteriv(target, pname, params);
 }
 
-GLboolean IsFramebufferOES(GLuint framebuffer)
+GLboolean GL_APIENTRY IsFramebufferOES(GLuint framebuffer)
 {
 	return IsFramebuffer(framebuffer);
 }
 
-void BindFramebufferOES(GLenum target, GLuint framebuffer)
+void GL_APIENTRY BindFramebufferOES(GLenum target, GLuint framebuffer)
 {
 	BindFramebuffer(target, framebuffer);
 }
 
-void DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers)
+void GL_APIENTRY DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers)
 {
 	DeleteFramebuffers(n, framebuffers);
 }
 
-void GenFramebuffersOES(GLsizei n, GLuint* framebuffers)
+void GL_APIENTRY GenFramebuffersOES(GLsizei n, GLuint* framebuffers)
 {
 	GenFramebuffers(n, framebuffers);
 }
 
-GLenum CheckFramebufferStatusOES(GLenum target)
+GLenum GL_APIENTRY CheckFramebufferStatusOES(GLenum target)
 {
 	return CheckFramebufferStatus(target);
 }
 
-void FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+void GL_APIENTRY FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
 {
 	FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
 }
 
-void FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+void GL_APIENTRY FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
 {
 	FramebufferTexture2D(target, attachment, textarget, texture, level);
 }
 
-void GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params)
+void GL_APIENTRY GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params)
 {
 	GetFramebufferAttachmentParameteriv(target, attachment, pname, params);
 }
 
-void GenerateMipmapOES(GLenum target)
+void GL_APIENTRY GenerateMipmapOES(GLenum target)
 {
 	GenerateMipmap(target);
 }
 
-void DrawBuffersEXT(GLsizei n, const GLenum *bufs)
+void GL_APIENTRY DrawBuffersEXT(GLsizei n, const GLenum *bufs)
 {
 	TRACE("(GLsizei n = %d, const GLenum *bufs = %p)", n, bufs);
 
diff --git a/src/OpenGL/libGLESv2/libGLESv2.hpp b/src/OpenGL/libGLESv2/libGLESv2.hpp
index e6ebe9a..e8f956e 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.hpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.hpp
@@ -41,207 +41,207 @@
 public:
 	LibGLESv2exports();
 
-	void (*glActiveTexture)(GLenum texture);
-	void (*glAttachShader)(GLuint program, GLuint shader);
-	void (*glBeginQueryEXT)(GLenum target, GLuint name);
-	void (*glBindAttribLocation)(GLuint program, GLuint index, const GLchar* name);
-	void (*glBindBuffer)(GLenum target, GLuint buffer);
-	void (*glBindFramebuffer)(GLenum target, GLuint framebuffer);
-	void (*glBindRenderbuffer)(GLenum target, GLuint renderbuffer);
-	void (*glBindTexture)(GLenum target, GLuint texture);
-	void (*glBlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-	void (*glBlendEquation)(GLenum mode);
-	void (*glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha);
-	void (*glBlendFunc)(GLenum sfactor, GLenum dfactor);
-	void (*glBlendFuncSeparate)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-	void (*glBufferData)(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
-	void (*glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
-	GLenum (*glCheckFramebufferStatus)(GLenum target);
-	void (*glClear)(GLbitfield mask);
-	void (*glClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-	void (*glClearDepthf)(GLclampf depth);
-	void (*glClearStencil)(GLint s);
-	void (*glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-	void (*glCompileShader)(GLuint shader);
-	void (*glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
-	                               GLint border, GLsizei imageSize, const GLvoid* data);
-	void (*glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-	                                  GLenum format, GLsizei imageSize, const GLvoid* data);
-	void (*glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-	void (*glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-	GLuint (*glCreateProgram)(void);
-	GLuint (*glCreateShader)(GLenum type);
-	void (*glCullFace)(GLenum mode);
-	void (*glDeleteBuffers)(GLsizei n, const GLuint* buffers);
-	void (*glDeleteFencesNV)(GLsizei n, const GLuint* fences);
-	void (*glDeleteFramebuffers)(GLsizei n, const GLuint* framebuffers);
-	void (*glDeleteProgram)(GLuint program);
-	void (*glDeleteQueriesEXT)(GLsizei n, const GLuint *ids);
-	void (*glDeleteRenderbuffers)(GLsizei n, const GLuint* renderbuffers);
-	void (*glDeleteShader)(GLuint shader);
-	void (*glDeleteTextures)(GLsizei n, const GLuint* textures);
-	void (*glDepthFunc)(GLenum func);
-	void (*glDepthMask)(GLboolean flag);
-	void (*glDepthRangef)(GLclampf zNear, GLclampf zFar);
-	void (*glDetachShader)(GLuint program, GLuint shader);
-	void (*glDisable)(GLenum cap);
-	void (*glDisableVertexAttribArray)(GLuint index);
-	void (*glDrawArrays)(GLenum mode, GLint first, GLsizei count);
-	void (*glDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
-	void (*glDrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
-	void (*glDrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
-	void (*glVertexAttribDivisorEXT)(GLuint index, GLuint divisor);
-	void (*glDrawArraysInstancedANGLE)(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
-	void (*glDrawElementsInstancedANGLE)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
-	void (*glVertexAttribDivisorANGLE)(GLuint index, GLuint divisor);
-	void (*glEnable)(GLenum cap);
-	void (*glEnableVertexAttribArray)(GLuint index);
-	void (*glEndQueryEXT)(GLenum target);
-	void (*glFinishFenceNV)(GLuint fence);
-	void (*glFinish)(void);
-	void (*glFlush)(void);
-	void (*glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-	void (*glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-	void (*glFrontFace)(GLenum mode);
-	void (*glGenBuffers)(GLsizei n, GLuint* buffers);
-	void (*glGenerateMipmap)(GLenum target);
-	void (*glGenFencesNV)(GLsizei n, GLuint* fences);
-	void (*glGenFramebuffers)(GLsizei n, GLuint* framebuffers);
-	void (*glGenQueriesEXT)(GLsizei n, GLuint* ids);
-	void (*glGenRenderbuffers)(GLsizei n, GLuint* renderbuffers);
-	void (*glGenTextures)(GLsizei n, GLuint* textures);
-	void (*glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-	void (*glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-	void (*glGetAttachedShaders)(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
-	int (*glGetAttribLocation)(GLuint program, const GLchar* name);
-	void (*glGetBooleanv)(GLenum pname, GLboolean* params);
-	void (*glGetBufferParameteriv)(GLenum target, GLenum pname, GLint* params);
-	GLenum (*glGetError)(void);
-	void (*glGetFenceivNV)(GLuint fence, GLenum pname, GLint *params);
-	void (*glGetFloatv)(GLenum pname, GLfloat* params);
-	void (*glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint* params);
-	GLenum (*glGetGraphicsResetStatusEXT)(void);
-	void (*glGetIntegerv)(GLenum pname, GLint* params);
-	void (*glGetProgramiv)(GLuint program, GLenum pname, GLint* params);
-	void (*glGetProgramInfoLog)(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-	void (*glGetQueryivEXT)(GLenum target, GLenum pname, GLint *params);
-	void (*glGetQueryObjectuivEXT)(GLuint name, GLenum pname, GLuint *params);
-	void (*glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint* params);
-	void (*glGetShaderiv)(GLuint shader, GLenum pname, GLint* params);
-	void (*glGetShaderInfoLog)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-	void (*glGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-	void (*glGetShaderSource)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
-	const GLubyte* (*glGetString)(GLenum name);
-	void (*glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat* params);
-	void (*glGetTexParameteriv)(GLenum target, GLenum pname, GLint* params);
-	void (*glGetnUniformfvEXT)(GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
-	void (*glGetUniformfv)(GLuint program, GLint location, GLfloat* params);
-	void (*glGetnUniformivEXT)(GLuint program, GLint location, GLsizei bufSize, GLint* params);
-	void (*glGetUniformiv)(GLuint program, GLint location, GLint* params);
-	int (*glGetUniformLocation)(GLuint program, const GLchar* name);
-	void (*glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat* params);
-	void (*glGetVertexAttribiv)(GLuint index, GLenum pname, GLint* params);
-	void (*glGetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid** pointer);
-	void (*glHint)(GLenum target, GLenum mode);
-	GLboolean (*glIsBuffer)(GLuint buffer);
-	GLboolean (*glIsEnabled)(GLenum cap);
-	GLboolean (*glIsFenceNV)(GLuint fence);
-	GLboolean (*glIsFramebuffer)(GLuint framebuffer);
-	GLboolean (*glIsProgram)(GLuint program);
-	GLboolean (*glIsQueryEXT)(GLuint name);
-	GLboolean (*glIsRenderbuffer)(GLuint renderbuffer);
-	GLboolean (*glIsShader)(GLuint shader);
-	GLboolean (*glIsTexture)(GLuint texture);
-	void (*glLineWidth)(GLfloat width);
-	void (*glLinkProgram)(GLuint program);
-	void (*glPixelStorei)(GLenum pname, GLint param);
-	void (*glPolygonOffset)(GLfloat factor, GLfloat units);
-	void (*glReadnPixelsEXT)(GLint x, GLint y, GLsizei width, GLsizei height,
-	                         GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
-	void (*glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
-	void (*glReleaseShaderCompiler)(void);
-	void (*glRenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-	void (*glRenderbufferStorageMultisampleANGLE)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-	void (*glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-	void (*glSampleCoverage)(GLclampf value, GLboolean invert);
-	void (*glSetFenceNV)(GLuint fence, GLenum condition);
-	void (*glScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
-	void (*glShaderBinary)(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
-	void (*glShaderSource)(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length);
-	void (*glStencilFunc)(GLenum func, GLint ref, GLuint mask);
-	void (*glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask);
-	void (*glStencilMask)(GLuint mask);
-	void (*glStencilMaskSeparate)(GLenum face, GLuint mask);
-	void (*glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass);
-	void (*glStencilOpSeparate)(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
-	GLboolean (*glTestFenceNV)(GLuint fence);
-	void (*glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
-	                     GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-	void (*glTexParameterf)(GLenum target, GLenum pname, GLfloat param);
-	void (*glTexParameterfv)(GLenum target, GLenum pname, const GLfloat* params);
-	void (*glTexParameteri)(GLenum target, GLenum pname, GLint param);
-	void (*glTexParameteriv)(GLenum target, GLenum pname, const GLint* params);
-	void (*glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
-	                        GLenum format, GLenum type, const GLvoid* pixels);
-	void (*glUniform1f)(GLint location, GLfloat x);
-	void (*glUniform1fv)(GLint location, GLsizei count, const GLfloat* v);
-	void (*glUniform1i)(GLint location, GLint x);
-	void (*glUniform1iv)(GLint location, GLsizei count, const GLint* v);
-	void (*glUniform2f)(GLint location, GLfloat x, GLfloat y);
-	void (*glUniform2fv)(GLint location, GLsizei count, const GLfloat* v);
-	void (*glUniform2i)(GLint location, GLint x, GLint y);
-	void (*glUniform2iv)(GLint location, GLsizei count, const GLint* v);
-	void (*glUniform3f)(GLint location, GLfloat x, GLfloat y, GLfloat z);
-	void (*glUniform3fv)(GLint location, GLsizei count, const GLfloat* v);
-	void (*glUniform3i)(GLint location, GLint x, GLint y, GLint z);
-	void (*glUniform3iv)(GLint location, GLsizei count, const GLint* v);
-	void (*glUniform4f)(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-	void (*glUniform4fv)(GLint location, GLsizei count, const GLfloat* v);
-	void (*glUniform4i)(GLint location, GLint x, GLint y, GLint z, GLint w);
-	void (*glUniform4iv)(GLint location, GLsizei count, const GLint* v);
-	void (*glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-	void (*glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-	void (*glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-	void (*glUseProgram)(GLuint program);
-	void (*glValidateProgram)(GLuint program);
-	void (*glVertexAttrib1f)(GLuint index, GLfloat x);
-	void (*glVertexAttrib1fv)(GLuint index, const GLfloat* values);
-	void (*glVertexAttrib2f)(GLuint index, GLfloat x, GLfloat y);
-	void (*glVertexAttrib2fv)(GLuint index, const GLfloat* values);
-	void (*glVertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
-	void (*glVertexAttrib3fv)(GLuint index, const GLfloat* values);
-	void (*glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-	void (*glVertexAttrib4fv)(GLuint index, const GLfloat* values);
-	void (*glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
-	void (*glViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
-	void (*glBlitFramebufferNV)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-	void (*glBlitFramebufferANGLE)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
-	                               GLbitfield mask, GLenum filter);
-	void (*glTexImage3DOES)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
-	                        GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-	void (*glTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
-	void (*glCopyTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-	void (*glCompressedTexImage3DOES)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
-	void (*glCompressedTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
-	void (*glFramebufferTexture3DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-	void (*glEGLImageTargetTexture2DOES)(GLenum target, GLeglImageOES image);
-	void (*glEGLImageTargetRenderbufferStorageOES)(GLenum target, GLeglImageOES image);
-	GLboolean (*glIsRenderbufferOES)(GLuint renderbuffer);
-	void (*glBindRenderbufferOES)(GLenum target, GLuint renderbuffer);
-	void (*glDeleteRenderbuffersOES)(GLsizei n, const GLuint* renderbuffers);
-	void (*glGenRenderbuffersOES)(GLsizei n, GLuint* renderbuffers);
-	void (*glRenderbufferStorageOES)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-	void (*glGetRenderbufferParameterivOES)(GLenum target, GLenum pname, GLint* params);
-	GLboolean (*glIsFramebufferOES)(GLuint framebuffer);
-	void (*glBindFramebufferOES)(GLenum target, GLuint framebuffer);
-	void (*glDeleteFramebuffersOES)(GLsizei n, const GLuint* framebuffers);
-	void (*glGenFramebuffersOES)(GLsizei n, GLuint* framebuffers);
-	GLenum (*glCheckFramebufferStatusOES)(GLenum target);
-	void (*glFramebufferRenderbufferOES)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-	void (*glFramebufferTexture2DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-	void (*glGetFramebufferAttachmentParameterivOES)(GLenum target, GLenum attachment, GLenum pname, GLint* params);
-	void (*glGenerateMipmapOES)(GLenum target);
-	void (*glDrawBuffersEXT)(GLsizei n, const GLenum *bufs);
+	void (GL_APIENTRY *glActiveTexture)(GLenum texture);
+	void (GL_APIENTRY *glAttachShader)(GLuint program, GLuint shader);
+	void (GL_APIENTRY *glBeginQueryEXT)(GLenum target, GLuint name);
+	void (GL_APIENTRY *glBindAttribLocation)(GLuint program, GLuint index, const GLchar* name);
+	void (GL_APIENTRY *glBindBuffer)(GLenum target, GLuint buffer);
+	void (GL_APIENTRY *glBindFramebuffer)(GLenum target, GLuint framebuffer);
+	void (GL_APIENTRY *glBindRenderbuffer)(GLenum target, GLuint renderbuffer);
+	void (GL_APIENTRY *glBindTexture)(GLenum target, GLuint texture);
+	void (GL_APIENTRY *glBlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void (GL_APIENTRY *glBlendEquation)(GLenum mode);
+	void (GL_APIENTRY *glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha);
+	void (GL_APIENTRY *glBlendFunc)(GLenum sfactor, GLenum dfactor);
+	void (GL_APIENTRY *glBlendFuncSeparate)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+	void (GL_APIENTRY *glBufferData)(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+	void (GL_APIENTRY *glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+	GLenum (GL_APIENTRY *glCheckFramebufferStatus)(GLenum target);
+	void (GL_APIENTRY *glClear)(GLbitfield mask);
+	void (GL_APIENTRY *glClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void (GL_APIENTRY *glClearDepthf)(GLclampf depth);
+	void (GL_APIENTRY *glClearStencil)(GLint s);
+	void (GL_APIENTRY *glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+	void (GL_APIENTRY *glCompileShader)(GLuint shader);
+	void (GL_APIENTRY *glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
+	                                           GLint border, GLsizei imageSize, const GLvoid* data);
+	void (GL_APIENTRY *glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+	                                              GLenum format, GLsizei imageSize, const GLvoid* data);
+	void (GL_APIENTRY *glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+	void (GL_APIENTRY *glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	GLuint (GL_APIENTRY *glCreateProgram)(void);
+	GLuint (GL_APIENTRY *glCreateShader)(GLenum type);
+	void (GL_APIENTRY *glCullFace)(GLenum mode);
+	void (GL_APIENTRY *glDeleteBuffers)(GLsizei n, const GLuint* buffers);
+	void (GL_APIENTRY *glDeleteFencesNV)(GLsizei n, const GLuint* fences);
+	void (GL_APIENTRY *glDeleteFramebuffers)(GLsizei n, const GLuint* framebuffers);
+	void (GL_APIENTRY *glDeleteProgram)(GLuint program);
+	void (GL_APIENTRY *glDeleteQueriesEXT)(GLsizei n, const GLuint *ids);
+	void (GL_APIENTRY *glDeleteRenderbuffers)(GLsizei n, const GLuint* renderbuffers);
+	void (GL_APIENTRY *glDeleteShader)(GLuint shader);
+	void (GL_APIENTRY *glDeleteTextures)(GLsizei n, const GLuint* textures);
+	void (GL_APIENTRY *glDepthFunc)(GLenum func);
+	void (GL_APIENTRY *glDepthMask)(GLboolean flag);
+	void (GL_APIENTRY *glDepthRangef)(GLclampf zNear, GLclampf zFar);
+	void (GL_APIENTRY *glDetachShader)(GLuint program, GLuint shader);
+	void (GL_APIENTRY *glDisable)(GLenum cap);
+	void (GL_APIENTRY *glDisableVertexAttribArray)(GLuint index);
+	void (GL_APIENTRY *glDrawArrays)(GLenum mode, GLint first, GLsizei count);
+	void (GL_APIENTRY *glDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+	void (GL_APIENTRY *glDrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
+	void (GL_APIENTRY *glDrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
+	void (GL_APIENTRY *glVertexAttribDivisorEXT)(GLuint index, GLuint divisor);
+	void (GL_APIENTRY *glDrawArraysInstancedANGLE)(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
+	void (GL_APIENTRY *glDrawElementsInstancedANGLE)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount);
+	void (GL_APIENTRY *glVertexAttribDivisorANGLE)(GLuint index, GLuint divisor);
+	void (GL_APIENTRY *glEnable)(GLenum cap);
+	void (GL_APIENTRY *glEnableVertexAttribArray)(GLuint index);
+	void (GL_APIENTRY *glEndQueryEXT)(GLenum target);
+	void (GL_APIENTRY *glFinishFenceNV)(GLuint fence);
+	void (GL_APIENTRY *glFinish)(void);
+	void (GL_APIENTRY *glFlush)(void);
+	void (GL_APIENTRY *glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void (GL_APIENTRY *glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void (GL_APIENTRY *glFrontFace)(GLenum mode);
+	void (GL_APIENTRY *glGenBuffers)(GLsizei n, GLuint* buffers);
+	void (GL_APIENTRY *glGenerateMipmap)(GLenum target);
+	void (GL_APIENTRY *glGenFencesNV)(GLsizei n, GLuint* fences);
+	void (GL_APIENTRY *glGenFramebuffers)(GLsizei n, GLuint* framebuffers);
+	void (GL_APIENTRY *glGenQueriesEXT)(GLsizei n, GLuint* ids);
+	void (GL_APIENTRY *glGenRenderbuffers)(GLsizei n, GLuint* renderbuffers);
+	void (GL_APIENTRY *glGenTextures)(GLsizei n, GLuint* textures);
+	void (GL_APIENTRY *glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+	void (GL_APIENTRY *glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+	void (GL_APIENTRY *glGetAttachedShaders)(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
+	int (GL_APIENTRY *glGetAttribLocation)(GLuint program, const GLchar* name);
+	void (GL_APIENTRY *glGetBooleanv)(GLenum pname, GLboolean* params);
+	void (GL_APIENTRY *glGetBufferParameteriv)(GLenum target, GLenum pname, GLint* params);
+	GLenum (GL_APIENTRY *glGetError)(void);
+	void (GL_APIENTRY *glGetFenceivNV)(GLuint fence, GLenum pname, GLint *params);
+	void (GL_APIENTRY *glGetFloatv)(GLenum pname, GLfloat* params);
+	void (GL_APIENTRY *glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	GLenum (GL_APIENTRY *glGetGraphicsResetStatusEXT)(void);
+	void (GL_APIENTRY *glGetIntegerv)(GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetProgramiv)(GLuint program, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetProgramInfoLog)(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+	void (GL_APIENTRY *glGetQueryivEXT)(GLenum target, GLenum pname, GLint *params);
+	void (GL_APIENTRY *glGetQueryObjectuivEXT)(GLuint name, GLenum pname, GLuint *params);
+	void (GL_APIENTRY *glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetShaderiv)(GLuint shader, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetShaderInfoLog)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+	void (GL_APIENTRY *glGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
+	void (GL_APIENTRY *glGetShaderSource)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
+	const GLubyte* (GL_APIENTRY *glGetString)(GLenum name);
+	void (GL_APIENTRY *glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat* params);
+	void (GL_APIENTRY *glGetTexParameteriv)(GLenum target, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetnUniformfvEXT)(GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
+	void (GL_APIENTRY *glGetUniformfv)(GLuint program, GLint location, GLfloat* params);
+	void (GL_APIENTRY *glGetnUniformivEXT)(GLuint program, GLint location, GLsizei bufSize, GLint* params);
+	void (GL_APIENTRY *glGetUniformiv)(GLuint program, GLint location, GLint* params);
+	int (GL_APIENTRY *glGetUniformLocation)(GLuint program, const GLchar* name);
+	void (GL_APIENTRY *glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat* params);
+	void (GL_APIENTRY *glGetVertexAttribiv)(GLuint index, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid** pointer);
+	void (GL_APIENTRY *glHint)(GLenum target, GLenum mode);
+	GLboolean (GL_APIENTRY *glIsBuffer)(GLuint buffer);
+	GLboolean (GL_APIENTRY *glIsEnabled)(GLenum cap);
+	GLboolean (GL_APIENTRY *glIsFenceNV)(GLuint fence);
+	GLboolean (GL_APIENTRY *glIsFramebuffer)(GLuint framebuffer);
+	GLboolean (GL_APIENTRY *glIsProgram)(GLuint program);
+	GLboolean (GL_APIENTRY *glIsQueryEXT)(GLuint name);
+	GLboolean (GL_APIENTRY *glIsRenderbuffer)(GLuint renderbuffer);
+	GLboolean (GL_APIENTRY *glIsShader)(GLuint shader);
+	GLboolean (GL_APIENTRY *glIsTexture)(GLuint texture);
+	void (GL_APIENTRY *glLineWidth)(GLfloat width);
+	void (GL_APIENTRY *glLinkProgram)(GLuint program);
+	void (GL_APIENTRY *glPixelStorei)(GLenum pname, GLint param);
+	void (GL_APIENTRY *glPolygonOffset)(GLfloat factor, GLfloat units);
+	void (GL_APIENTRY *glReadnPixelsEXT)(GLint x, GLint y, GLsizei width, GLsizei height,
+	                                     GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
+	void (GL_APIENTRY *glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+	void (GL_APIENTRY *glReleaseShaderCompiler)(void);
+	void (GL_APIENTRY *glRenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glRenderbufferStorageMultisampleANGLE)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glSampleCoverage)(GLclampf value, GLboolean invert);
+	void (GL_APIENTRY *glSetFenceNV)(GLuint fence, GLenum condition);
+	void (GL_APIENTRY *glScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glShaderBinary)(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
+	void (GL_APIENTRY *glShaderSource)(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length);
+	void (GL_APIENTRY *glStencilFunc)(GLenum func, GLint ref, GLuint mask);
+	void (GL_APIENTRY *glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask);
+	void (GL_APIENTRY *glStencilMask)(GLuint mask);
+	void (GL_APIENTRY *glStencilMaskSeparate)(GLenum face, GLuint mask);
+	void (GL_APIENTRY *glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass);
+	void (GL_APIENTRY *glStencilOpSeparate)(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
+	GLboolean (GL_APIENTRY *glTestFenceNV)(GLuint fence);
+	void (GL_APIENTRY *glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+	                                 GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void (GL_APIENTRY *glTexParameterf)(GLenum target, GLenum pname, GLfloat param);
+	void (GL_APIENTRY *glTexParameterfv)(GLenum target, GLenum pname, const GLfloat* params);
+	void (GL_APIENTRY *glTexParameteri)(GLenum target, GLenum pname, GLint param);
+	void (GL_APIENTRY *glTexParameteriv)(GLenum target, GLenum pname, const GLint* params);
+	void (GL_APIENTRY *glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
+	                                    GLenum format, GLenum type, const GLvoid* pixels);
+	void (GL_APIENTRY *glUniform1f)(GLint location, GLfloat x);
+	void (GL_APIENTRY *glUniform1fv)(GLint location, GLsizei count, const GLfloat* v);
+	void (GL_APIENTRY *glUniform1i)(GLint location, GLint x);
+	void (GL_APIENTRY *glUniform1iv)(GLint location, GLsizei count, const GLint* v);
+	void (GL_APIENTRY *glUniform2f)(GLint location, GLfloat x, GLfloat y);
+	void (GL_APIENTRY *glUniform2fv)(GLint location, GLsizei count, const GLfloat* v);
+	void (GL_APIENTRY *glUniform2i)(GLint location, GLint x, GLint y);
+	void (GL_APIENTRY *glUniform2iv)(GLint location, GLsizei count, const GLint* v);
+	void (GL_APIENTRY *glUniform3f)(GLint location, GLfloat x, GLfloat y, GLfloat z);
+	void (GL_APIENTRY *glUniform3fv)(GLint location, GLsizei count, const GLfloat* v);
+	void (GL_APIENTRY *glUniform3i)(GLint location, GLint x, GLint y, GLint z);
+	void (GL_APIENTRY *glUniform3iv)(GLint location, GLsizei count, const GLint* v);
+	void (GL_APIENTRY *glUniform4f)(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+	void (GL_APIENTRY *glUniform4fv)(GLint location, GLsizei count, const GLfloat* v);
+	void (GL_APIENTRY *glUniform4i)(GLint location, GLint x, GLint y, GLint z, GLint w);
+	void (GL_APIENTRY *glUniform4iv)(GLint location, GLsizei count, const GLint* v);
+	void (GL_APIENTRY *glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void (GL_APIENTRY *glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void (GL_APIENTRY *glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void (GL_APIENTRY *glUseProgram)(GLuint program);
+	void (GL_APIENTRY *glValidateProgram)(GLuint program);
+	void (GL_APIENTRY *glVertexAttrib1f)(GLuint index, GLfloat x);
+	void (GL_APIENTRY *glVertexAttrib1fv)(GLuint index, const GLfloat* values);
+	void (GL_APIENTRY *glVertexAttrib2f)(GLuint index, GLfloat x, GLfloat y);
+	void (GL_APIENTRY *glVertexAttrib2fv)(GLuint index, const GLfloat* values);
+	void (GL_APIENTRY *glVertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
+	void (GL_APIENTRY *glVertexAttrib3fv)(GLuint index, const GLfloat* values);
+	void (GL_APIENTRY *glVertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+	void (GL_APIENTRY *glVertexAttrib4fv)(GLuint index, const GLfloat* values);
+	void (GL_APIENTRY *glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
+	void (GL_APIENTRY *glViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glBlitFramebufferNV)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+	void (GL_APIENTRY *glBlitFramebufferANGLE)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+	                                           GLbitfield mask, GLenum filter);
+	void (GL_APIENTRY *glTexImage3DOES)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth,
+	                                    GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void (GL_APIENTRY *glTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+	void (GL_APIENTRY *glCopyTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glCompressedTexImage3DOES)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
+	void (GL_APIENTRY *glCompressedTexSubImage3DOES)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+	void (GL_APIENTRY *glFramebufferTexture3DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+	void (GL_APIENTRY *glEGLImageTargetTexture2DOES)(GLenum target, GLeglImageOES image);
+	void (GL_APIENTRY *glEGLImageTargetRenderbufferStorageOES)(GLenum target, GLeglImageOES image);
+	GLboolean (GL_APIENTRY *glIsRenderbufferOES)(GLuint renderbuffer);
+	void (GL_APIENTRY *glBindRenderbufferOES)(GLenum target, GLuint renderbuffer);
+	void (GL_APIENTRY *glDeleteRenderbuffersOES)(GLsizei n, const GLuint* renderbuffers);
+	void (GL_APIENTRY *glGenRenderbuffersOES)(GLsizei n, GLuint* renderbuffers);
+	void (GL_APIENTRY *glRenderbufferStorageOES)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void (GL_APIENTRY *glGetRenderbufferParameterivOES)(GLenum target, GLenum pname, GLint* params);
+	GLboolean (GL_APIENTRY *glIsFramebufferOES)(GLuint framebuffer);
+	void (GL_APIENTRY *glBindFramebufferOES)(GLenum target, GLuint framebuffer);
+	void (GL_APIENTRY *glDeleteFramebuffersOES)(GLsizei n, const GLuint* framebuffers);
+	void (GL_APIENTRY *glGenFramebuffersOES)(GLsizei n, GLuint* framebuffers);
+	GLenum (GL_APIENTRY *glCheckFramebufferStatusOES)(GLenum target);
+	void (GL_APIENTRY *glFramebufferRenderbufferOES)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void (GL_APIENTRY *glFramebufferTexture2DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void (GL_APIENTRY *glGetFramebufferAttachmentParameterivOES)(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	void (GL_APIENTRY *glGenerateMipmapOES)(GLenum target);
+	void (GL_APIENTRY *glDrawBuffersEXT)(GLsizei n, const GLenum *bufs);
 
 	egl::Context *(*es2CreateContext)(egl::Display *display, const egl::Context *shareContext, const egl::Config *config);
 	__eglMustCastToProperFunctionPointerType (*es2GetProcAddress)(const char *procname);
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp
index e12ea4d..bdfce54 100644
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -212,7 +212,7 @@
 namespace gl
 {
 
-void ReadBuffer(GLenum src)
+void GL_APIENTRY ReadBuffer(GLenum src)
 {
 	TRACE("(GLenum src = 0x%X)", src);
 
@@ -285,7 +285,7 @@
 	}
 }
 
-void DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)
+void GL_APIENTRY DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)
 {
 	TRACE("(GLenum mode = 0x%X, GLuint start = %d, GLuint end = %d, "
 		  "GLsizei count = %d, GLenum type = 0x%x, const void* indices = %p)",
@@ -334,7 +334,7 @@
 	}
 }
 
-void TexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *data)
+void GL_APIENTRY TexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, "
 	      "GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, GLint border = %d, "
@@ -394,7 +394,7 @@
 	}
 }
 
-void TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
+void GL_APIENTRY TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 		"GLint zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, "
@@ -442,7 +442,7 @@
 	}
 }
 
-void CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 		"GLint zoffset = %d, GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)",
@@ -505,7 +505,7 @@
 	}
 }
 
-void CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
+void GL_APIENTRY CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLenum internalformat = 0x%X, GLsizei width = %d, "
 		"GLsizei height = %d, GLsizei depth = %d, GLint border = %d, GLsizei imageSize = %d, const GLvoid* data = %p)",
@@ -562,7 +562,7 @@
 	}
 }
 
-void CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
+void GL_APIENTRY CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
 {
 	TRACE("(GLenum target = 0x%X, GLint level = %d, GLint xoffset = %d, GLint yoffset = %d, "
 	      "GLint zoffset = %d, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d, "
@@ -659,7 +659,7 @@
 	}
 }
 
-void GenQueries(GLsizei n, GLuint *ids)
+void GL_APIENTRY GenQueries(GLsizei n, GLuint *ids)
 {
 	TRACE("(GLsizei n = %d, GLuint* ids = %p)", n, ids);
 
@@ -679,7 +679,7 @@
 	}
 }
 
-void DeleteQueries(GLsizei n, const GLuint *ids)
+void GL_APIENTRY DeleteQueries(GLsizei n, const GLuint *ids)
 {
 	TRACE("(GLsizei n = %d, GLuint* ids = %p)", n, ids);
 
@@ -699,7 +699,7 @@
 	}
 }
 
-GLboolean IsQuery(GLuint id)
+GLboolean GL_APIENTRY IsQuery(GLuint id)
 {
 	TRACE("(GLuint id = %d)", id);
 
@@ -723,7 +723,7 @@
 	return GL_FALSE;
 }
 
-void BeginQuery(GLenum target, GLuint id)
+void GL_APIENTRY BeginQuery(GLenum target, GLuint id)
 {
 	TRACE("(GLenum target = 0x%X, GLuint id = %d)", target, id);
 
@@ -745,7 +745,7 @@
 	}
 }
 
-void EndQuery(GLenum target)
+void GL_APIENTRY EndQuery(GLenum target)
 {
 	TRACE("(GLenum target = 0x%X)", target);
 
@@ -762,7 +762,7 @@
 	}
 }
 
-void GetQueryiv(GLenum target, GLenum pname, GLint *params)
+void GL_APIENTRY GetQueryiv(GLenum target, GLenum pname, GLint *params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint *params = %p)",
 		  target, pname, params);
@@ -780,7 +780,7 @@
 	}
 }
 
-void GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
+void GL_APIENTRY GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
 {
 	TRACE("(GLuint id = %d, GLenum pname = 0x%X, GLint *params = %p)",
 	      id, pname, params);
@@ -824,7 +824,7 @@
 	}
 }
 
-GLboolean UnmapBuffer(GLenum target)
+GLboolean GL_APIENTRY UnmapBuffer(GLenum target)
 {
 	TRACE("(GLenum target = 0x%X)", target);
 
@@ -856,7 +856,7 @@
 	return GL_TRUE;
 }
 
-void GetBufferPointerv(GLenum target, GLenum pname, void **params)
+void GL_APIENTRY GetBufferPointerv(GLenum target, GLenum pname, void **params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint *params = %p)",
 	      target, pname, params);
@@ -886,7 +886,7 @@
 	}
 }
 
-void DrawBuffers(GLsizei n, const GLenum *bufs)
+void GL_APIENTRY DrawBuffers(GLsizei n, const GLenum *bufs)
 {
 	TRACE("(GLsizei n = %d, const GLenum *bufs = %p)", n, bufs);
 
@@ -978,7 +978,7 @@
 	}
 }
 
-void UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+void GL_APIENTRY UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat *value = %p)", location, count, transpose, value);
 
@@ -1010,7 +1010,7 @@
 	}
 }
 
-void UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+void GL_APIENTRY UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat *value = %p)", location, count, transpose, value);
 
@@ -1042,7 +1042,7 @@
 	}
 }
 
-void UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+void GL_APIENTRY UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat *value = %p)", location, count, transpose, value);
 
@@ -1074,7 +1074,7 @@
 	}
 }
 
-void UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+void GL_APIENTRY UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat *value = %p)", location, count, transpose, value);
 
@@ -1106,7 +1106,7 @@
 	}
 }
 
-void UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+void GL_APIENTRY UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat *value = %p)", location, count, transpose, value);
 
@@ -1138,7 +1138,7 @@
 	}
 }
 
-void UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+void GL_APIENTRY UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, GLboolean transpose = %d, const GLfloat *value = %p)", location, count, transpose, value);
 
@@ -1170,7 +1170,7 @@
 	}
 }
 
-void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+void GL_APIENTRY BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
 {
 	TRACE("(GLint srcX0 = %d, GLint srcY0 = %d, GLint srcX1 = %d, GLint srcY1 = %d, "
 	      "GLint dstX0 = %d, GLint dstY0 = %d, GLint dstX1 = %d, GLint dstY1 = %d, "
@@ -1210,7 +1210,7 @@
 	}
 }
 
-void FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+void GL_APIENTRY FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
 {
 	TRACE("(GLenum target = 0x%X, GLenum attachment = 0x%X, GLuint texture = %d, GLint level = %d, GLint layer = %d)",
 	      target, attachment, texture, level, layer);
@@ -1323,7 +1323,7 @@
 	}
 }
 
-void *MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
+void *GL_APIENTRY MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
 {
 	TRACE("(GLenum target = 0x%X,  GLintptr offset = %d, GLsizeiptr length = %d, GLbitfield access = %X)",
 	      target, offset, length, access);
@@ -1393,7 +1393,7 @@
 	return nullptr;
 }
 
-void FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
+void GL_APIENTRY FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
 {
 	TRACE("(GLenum target = 0x%X,  GLintptr offset = %d, GLsizeiptr length = %d)",
 	      target, offset, length);
@@ -1441,7 +1441,7 @@
 	}
 }
 
-void BindVertexArray(GLuint array)
+void GL_APIENTRY BindVertexArray(GLuint array)
 {
 	TRACE("(GLuint array = %d)", array);
 
@@ -1458,12 +1458,12 @@
 	}
 }
 
-void BindVertexArrayOES(GLuint array)
+void GL_APIENTRY BindVertexArrayOES(GLuint array)
 {
 	BindVertexArray(array);
 }
 
-void DeleteVertexArrays(GLsizei n, const GLuint *arrays)
+void GL_APIENTRY DeleteVertexArrays(GLsizei n, const GLuint *arrays)
 {
 	TRACE("(GLsizei n = %d, const GLuint *arrays = %p)", n, arrays);
 
@@ -1486,12 +1486,12 @@
 	}
 }
 
-void DeleteVertexArraysOES(GLsizei n, const GLuint *arrays)
+void GL_APIENTRY DeleteVertexArraysOES(GLsizei n, const GLuint *arrays)
 {
 	DeleteVertexArrays(n, arrays);
 }
 
-void GenVertexArrays(GLsizei n, GLuint *arrays)
+void GL_APIENTRY GenVertexArrays(GLsizei n, GLuint *arrays)
 {
 	TRACE("(GLsizei n = %d, const GLuint *arrays = %p)", n, arrays);
 
@@ -1511,12 +1511,12 @@
 	}
 }
 
-void GenVertexArraysOES(GLsizei n, GLuint *arrays)
+void GL_APIENTRY GenVertexArraysOES(GLsizei n, GLuint *arrays)
 {
 	GenVertexArrays(n, arrays);
 }
 
-GLboolean IsVertexArray(GLuint array)
+GLboolean GL_APIENTRY IsVertexArray(GLuint array)
 {
 	TRACE("(GLuint array = %d)", array);
 
@@ -1540,12 +1540,12 @@
 	return GL_FALSE;
 }
 
-GLboolean IsVertexArrayOES(GLuint array)
+GLboolean GL_APIENTRY IsVertexArrayOES(GLuint array)
 {
 	return IsVertexArray(array);
 }
 
-void GetIntegeri_v(GLenum target, GLuint index, GLint *data)
+void GL_APIENTRY GetIntegeri_v(GLenum target, GLuint index, GLint *data)
 {
 	TRACE("(GLenum target = 0x%X, GLuint index = %d, GLint* data = %p)",
 	      target, index, data);
@@ -1605,7 +1605,7 @@
 	}
 }
 
-void BeginTransformFeedback(GLenum primitiveMode)
+void GL_APIENTRY BeginTransformFeedback(GLenum primitiveMode)
 {
 	TRACE("(GLenum primitiveMode = 0x%X)", primitiveMode);
 
@@ -1640,7 +1640,7 @@
 	}
 }
 
-void EndTransformFeedback(void)
+void GL_APIENTRY EndTransformFeedback(void)
 {
 	TRACE("()");
 
@@ -1665,7 +1665,7 @@
 	}
 }
 
-void BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+void GL_APIENTRY BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
 {
 	TRACE("(GLenum target = 0x%X, GLuint index = %d, GLuint buffer = %d, GLintptr offset = %d, GLsizeiptr size = %d)",
 	      target, index, buffer, offset, size);
@@ -1711,7 +1711,7 @@
 	}
 }
 
-void BindBufferBase(GLenum target, GLuint index, GLuint buffer)
+void GL_APIENTRY BindBufferBase(GLenum target, GLuint index, GLuint buffer)
 {
 	TRACE("(GLenum target = 0x%X, GLuint index = %d, GLuint buffer = %d)",
 	      target, index, buffer);
@@ -1744,7 +1744,7 @@
 	}
 }
 
-void TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)
+void GL_APIENTRY TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)
 {
 	TRACE("(GLuint program = %d, GLsizei count = %d, const GLchar *const*varyings = %p, GLenum bufferMode = 0x%X)",
 	      program, count, varyings, bufferMode);
@@ -1777,7 +1777,7 @@
 	}
 }
 
-void GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
+void GL_APIENTRY GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
 {
 	TRACE("(GLuint program = %d, GLuint index = %d, GLsizei bufSize = %d, GLsizei *length = %p, GLsizei *size = %p, GLenum *type = %p, GLchar *name = %p)",
 	      program, index, bufSize, length, size, type, name);
@@ -1807,7 +1807,7 @@
 	}
 }
 
-void VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
+void GL_APIENTRY VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
 {
 	TRACE("(GLuint program = %d, GLuint index = %d, GLsizei bufSize = %d, GLsizei *length = %p, GLsizei *size = %p, GLenum *type = %p, GLchar *name = %p)",
 	      index, size, type, stride, pointer);
@@ -1851,7 +1851,7 @@
 	}
 }
 
-void GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params)
+void GL_APIENTRY GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params)
 {
 	TRACE("(GLuint index = %d, GLenum pname = 0x%X, GLint *params = %p)",
 	      index, pname, params);
@@ -1907,7 +1907,7 @@
 	}
 }
 
-void GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params)
+void GL_APIENTRY GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params)
 {
 	TRACE("(GLuint index = %d, GLenum pname = 0x%X, GLuint *params = %p)",
 		index, pname, params);
@@ -1963,7 +1963,7 @@
 	}
 }
 
-void VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
+void GL_APIENTRY VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
 {
 	TRACE("(GLuint index = %d, GLint x = %d, GLint y = %d, GLint z = %d, GLint w = %d)",
 	      index, x, y, z, w);
@@ -1982,7 +1982,7 @@
 	}
 }
 
-void VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+void GL_APIENTRY VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
 {
 	TRACE("(GLuint index = %d, GLint x = %d, GLint y = %d, GLint z = %d, GLint w = %d)",
 	      index, x, y, z, w);
@@ -2001,7 +2001,7 @@
 	}
 }
 
-void VertexAttribI4iv(GLuint index, const GLint *v)
+void GL_APIENTRY VertexAttribI4iv(GLuint index, const GLint *v)
 {
 	TRACE("(GLuint index = %d, GLint *v = %p)", index, v);
 
@@ -2018,7 +2018,7 @@
 	}
 }
 
-void VertexAttribI4uiv(GLuint index, const GLuint *v)
+void GL_APIENTRY VertexAttribI4uiv(GLuint index, const GLuint *v)
 {
 	TRACE("(GLuint index = %d, GLint *v = %p)", index, v);
 
@@ -2035,7 +2035,7 @@
 	}
 }
 
-void GetUniformuiv(GLuint program, GLint location, GLuint *params)
+void GL_APIENTRY GetUniformuiv(GLuint program, GLint location, GLuint *params)
 {
 	TRACE("(GLuint program = %d, GLint location = %d, GLuint *params = %p)",
 	      program, location, params);
@@ -2070,7 +2070,7 @@
 	}
 }
 
-GLint GetFragDataLocation(GLuint program, const GLchar *name)
+GLint GL_APIENTRY GetFragDataLocation(GLuint program, const GLchar *name)
 {
 	TRACE("(GLuint program = %d, const GLchar *name = %p)", program, name);
 
@@ -2103,7 +2103,7 @@
 	return -1;
 }
 
-void Uniform1uiv(GLint location, GLsizei count, const GLuint *value)
+void GL_APIENTRY Uniform1uiv(GLint location, GLsizei count, const GLuint *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLuint *value = %p)",
 	      location, count, value);
@@ -2136,7 +2136,7 @@
 	}
 }
 
-void Uniform2uiv(GLint location, GLsizei count, const GLuint *value)
+void GL_APIENTRY Uniform2uiv(GLint location, GLsizei count, const GLuint *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLuint *value = %p)",
 	      location, count, value);
@@ -2169,7 +2169,7 @@
 	}
 }
 
-void Uniform3uiv(GLint location, GLsizei count, const GLuint *value)
+void GL_APIENTRY Uniform3uiv(GLint location, GLsizei count, const GLuint *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLuint *value = %p)",
 	      location, count, value);
@@ -2202,7 +2202,7 @@
 	}
 }
 
-void Uniform4uiv(GLint location, GLsizei count, const GLuint *value)
+void GL_APIENTRY Uniform4uiv(GLint location, GLsizei count, const GLuint *value)
 {
 	TRACE("(GLint location = %d, GLsizei count = %d, const GLuint *value = %p)",
 	      location, count, value);
@@ -2235,33 +2235,33 @@
 	}
 }
 
-void Uniform1ui(GLint location, GLuint v0)
+void GL_APIENTRY Uniform1ui(GLint location, GLuint v0)
 {
 	Uniform1uiv(location, 1, &v0);
 }
 
-void Uniform2ui(GLint location, GLuint v0, GLuint v1)
+void GL_APIENTRY Uniform2ui(GLint location, GLuint v0, GLuint v1)
 {
 	GLuint xy[2] = { v0, v1 };
 
 	Uniform2uiv(location, 1, (GLuint*)&xy);
 }
 
-void Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
+void GL_APIENTRY Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
 {
 	GLuint xyz[3] = { v0, v1, v2 };
 
 	Uniform3uiv(location, 1, (GLuint*)&xyz);
 }
 
-void Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
+void GL_APIENTRY Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
 {
 	GLuint xyzw[4] = { v0, v1, v2, v3 };
 
 	Uniform4uiv(location, 1, (GLuint*)&xyzw);
 }
 
-void ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
+void GL_APIENTRY ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
 {
 	TRACE("(GLenum buffer = 0x%X, GLint drawbuffer = %d, const GLint *value = %p)",
 	      buffer, drawbuffer, value);
@@ -2298,7 +2298,7 @@
 	}
 }
 
-void ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
+void GL_APIENTRY ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
 {
 	TRACE("(GLenum buffer = 0x%X, GLint drawbuffer = %d, const GLuint *value = %p)",
 	      buffer, drawbuffer, value);
@@ -2325,7 +2325,7 @@
 	}
 }
 
-void ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
+void GL_APIENTRY ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
 {
 	TRACE("(GLenum buffer = 0x%X, GLint drawbuffer = %d, const GLfloat *value = %p)",
 	      buffer, drawbuffer, value);
@@ -2362,7 +2362,7 @@
 	}
 }
 
-void ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
+void GL_APIENTRY ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
 {
 	TRACE("(GLenum buffer = 0x%X, GLint drawbuffer = %d, GLfloat depth = %f, GLint stencil = %d)",
 	      buffer, drawbuffer, depth, stencil);
@@ -2390,7 +2390,7 @@
 	}
 }
 
-const GLubyte *GetStringi(GLenum name, GLuint index)
+const GLubyte *GL_APIENTRY GetStringi(GLenum name, GLuint index)
 {
 	TRACE("(GLenum name = 0x%X, GLuint index = %d)", name, index);
 
@@ -2417,7 +2417,7 @@
 	return (GLubyte*)nullptr;
 }
 
-void CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+void GL_APIENTRY CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
 {
 	TRACE("(GLenum readTarget = 0x%X, GLenum writeTarget = 0x%X,  GLintptr readOffset = %d, GLintptr writeOffset = %d, GLsizeiptr size = %d)",
 	      readTarget, writeTarget, readOffset, writeOffset, size);
@@ -2460,7 +2460,7 @@
 	}
 }
 
-void GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)
+void GL_APIENTRY GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)
 {
 	TRACE("(GLuint program = %d, GLsizei uniformCount = %d, const GLchar *const*uniformNames = %p, GLuint *uniformIndices = %p)",
 	      program, uniformCount, uniformNames, uniformIndices);
@@ -2505,7 +2505,7 @@
 	}
 }
 
-void GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
+void GL_APIENTRY GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
 {
 	TRACE("(GLuint program = %d, GLsizei uniformCount = %d, const GLchar *const*uniformNames = %p, GLenum pname = 0x%X, GLuint *uniformIndices = %p)",
 	      program, uniformCount, uniformIndices, pname, uniformIndices);
@@ -2566,7 +2566,7 @@
 	}
 }
 
-GLuint GetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName)
+GLuint GL_APIENTRY GetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName)
 {
 	TRACE("(GLuint program = %d, const GLchar *uniformBlockName = %p)",
 	      program, uniformBlockName);
@@ -2595,7 +2595,7 @@
 	return GL_INVALID_INDEX;
 }
 
-void GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
+void GL_APIENTRY GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
 {
 	TRACE("(GLuint program = %d, GLuint uniformBlockIndex = %d, GLenum pname = 0x%X, GLint *params = %p)",
 	      program, uniformBlockIndex, pname, params);
@@ -2635,7 +2635,7 @@
 	}
 }
 
-void GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
+void GL_APIENTRY GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
 {
 	TRACE("(GLuint program = %d, GLuint uniformBlockIndex = %d, GLsizei bufSize = %d, GLsizei *length = %p, GLchar *uniformBlockName = %p)",
 	      program, uniformBlockIndex, bufSize, length, uniformBlockName);
@@ -2665,7 +2665,7 @@
 	}
 }
 
-void UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
+void GL_APIENTRY UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
 {
 	TRACE("(GLuint program = %d, GLuint uniformBlockIndex = %d, GLuint uniformBlockBinding = %d)",
 	      program, uniformBlockIndex, uniformBlockBinding);
@@ -2695,7 +2695,7 @@
 	}
 }
 
-void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
+void GL_APIENTRY DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
 {
 	TRACE("(GLenum mode = 0x%X, GLint first = %d, GLsizei count = %d, GLsizei instanceCount = %d)",
 	      mode, first, count, instanceCount);
@@ -2733,7 +2733,7 @@
 	}
 }
 
-void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount)
+void GL_APIENTRY DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instanceCount)
 {
 	TRACE("(GLenum mode = 0x%X, GLsizei count = %d, GLenum type = 0x%X, const void *indices = %p, GLsizei instanceCount = %d)",
 	      mode, count, type, indices, instanceCount);
@@ -2781,7 +2781,7 @@
 	}
 }
 
-GLsync FenceSync(GLenum condition, GLbitfield flags)
+GLsync GL_APIENTRY FenceSync(GLenum condition, GLbitfield flags)
 {
 	TRACE("(GLenum condition = 0x%X, GLbitfield flags = %X)", condition, flags);
 
@@ -2808,7 +2808,7 @@
 	return nullptr;
 }
 
-GLboolean IsSync(GLsync sync)
+GLboolean GL_APIENTRY IsSync(GLsync sync)
 {
 	TRACE("(GLsync sync = %p)", sync);
 
@@ -2827,7 +2827,7 @@
 	return GL_FALSE;
 }
 
-void DeleteSync(GLsync sync)
+void GL_APIENTRY DeleteSync(GLsync sync)
 {
 	TRACE("(GLsync sync = %p)", sync);
 
@@ -2849,7 +2849,7 @@
 	}
 }
 
-GLenum ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
+GLenum GL_APIENTRY ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
 {
 	TRACE("(GLsync sync = %p, GLbitfield flags = %X, GLuint64 timeout = %llu)", sync, flags, timeout);
 
@@ -2877,7 +2877,7 @@
 	return GL_FALSE;
 }
 
-void WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
+void GL_APIENTRY WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
 {
 	TRACE("(GLsync sync = %p, GLbitfield flags = %X, GLuint64 timeout = %llu)", sync, flags, timeout);
 
@@ -2908,7 +2908,7 @@
 	}
 }
 
-void GetInteger64v(GLenum pname, GLint64 *data)
+void GL_APIENTRY GetInteger64v(GLenum pname, GLint64 *data)
 {
 	TRACE("(GLenum pname = 0x%X, GLint64 *data = %p)", pname, data);
 
@@ -2965,7 +2965,7 @@
 	}
 }
 
-void GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
+void GL_APIENTRY GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
 {
 	TRACE("(GLsync sync = %p, GLenum pname = 0x%X, GLsizei bufSize = %d, GLsizei *length = %p, GLint *values = %p)",
 	      sync, pname, bufSize, length, values);
@@ -2989,7 +2989,7 @@
 	}
 }
 
-void GetInteger64i_v(GLenum target, GLuint index, GLint64 *data)
+void GL_APIENTRY GetInteger64i_v(GLenum target, GLuint index, GLint64 *data)
 {
 	TRACE("(GLenum target = 0x%X, GLuint index = %d, GLint64 *data = %p)", target, index, data);
 
@@ -3048,7 +3048,7 @@
 	}
 }
 
-void GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params)
+void GL_APIENTRY GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum pname = 0x%X, GLint64 *params = %p)", target, pname, params);
 
@@ -3095,7 +3095,7 @@
 	}
 }
 
-void GenSamplers(GLsizei count, GLuint *samplers)
+void GL_APIENTRY GenSamplers(GLsizei count, GLuint *samplers)
 {
 	TRACE("(GLsizei count = %d, GLuint *samplers = %p)", count, samplers);
 
@@ -3115,7 +3115,7 @@
 	}
 }
 
-void DeleteSamplers(GLsizei count, const GLuint *samplers)
+void GL_APIENTRY DeleteSamplers(GLsizei count, const GLuint *samplers)
 {
 	TRACE("(GLsizei count = %d, GLuint *samplers = %p)", count, samplers);
 
@@ -3135,7 +3135,7 @@
 	}
 }
 
-GLboolean IsSampler(GLuint sampler)
+GLboolean GL_APIENTRY IsSampler(GLuint sampler)
 {
 	TRACE("(GLuint sampler = %d)", sampler);
 
@@ -3157,7 +3157,7 @@
 	return GL_FALSE;
 }
 
-void BindSampler(GLuint unit, GLuint sampler)
+void GL_APIENTRY BindSampler(GLuint unit, GLuint sampler)
 {
 	TRACE("(GLuint unit = %d, GLuint sampler = %d)", unit, sampler);
 
@@ -3179,7 +3179,7 @@
 	}
 }
 
-void SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param)
+void GL_APIENTRY SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param)
 {
 	TRACE("(GLuint sampler = %d, GLenum pname = 0x%X, const GLint *param = %p)",
 	      sampler, pname, param);
@@ -3207,7 +3207,7 @@
 	}
 }
 
-void SamplerParameteri(GLuint sampler, GLenum pname, GLint param)
+void GL_APIENTRY SamplerParameteri(GLuint sampler, GLenum pname, GLint param)
 {
 	TRACE("(GLuint sampler = %d, GLenum pname = 0x%X, GLint param = %d)",
 	      sampler, pname, param);
@@ -3215,7 +3215,7 @@
 	SamplerParameteriv(sampler, pname, &param);
 }
 
-void SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param)
+void GL_APIENTRY SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param)
 {
 	TRACE("(GLuint sampler = %d, GLenum pname = 0x%X, const GLfloat *param = %p)",
 	      sampler, pname, param);
@@ -3241,7 +3241,7 @@
 	}
 }
 
-void SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
+void GL_APIENTRY SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
 {
 	TRACE("(GLuint sampler = %d, GLenum pname = 0x%X, GLfloat param = %f)",
 	      sampler, pname, param);
@@ -3249,7 +3249,7 @@
 	SamplerParameterfv(sampler, pname, &param);
 }
 
-void GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params)
+void GL_APIENTRY GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params)
 {
 	TRACE("(GLuint sampler = %d, GLenum pname = 0x%X, GLint *params = %p)",
 	      sampler, pname, params);
@@ -3272,7 +3272,7 @@
 	}
 }
 
-void GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params)
+void GL_APIENTRY GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params)
 {
 	TRACE("(GLuint sampler = %d, GLenum pname = 0x%X, GLfloat *params = %p)",
 	      sampler, pname, params);
@@ -3295,7 +3295,7 @@
 	}
 }
 
-void VertexAttribDivisor(GLuint index, GLuint divisor)
+void GL_APIENTRY VertexAttribDivisor(GLuint index, GLuint divisor)
 {
 	TRACE("(GLuint index = %d, GLuint divisor = %d)", index, divisor);
 
@@ -3312,7 +3312,7 @@
 	}
 }
 
-void BindTransformFeedback(GLenum target, GLuint id)
+void GL_APIENTRY BindTransformFeedback(GLenum target, GLuint id)
 {
 	TRACE("(GLenum target = 0x%X, GLuint id = %d)", target, id);
 
@@ -3341,7 +3341,7 @@
 	}
 }
 
-void DeleteTransformFeedbacks(GLsizei n, const GLuint *ids)
+void GL_APIENTRY DeleteTransformFeedbacks(GLsizei n, const GLuint *ids)
 {
 	TRACE("(GLsizei n = %d, const GLuint *ids = %p)", n, ids);
 
@@ -3371,7 +3371,7 @@
 	}
 }
 
-void GenTransformFeedbacks(GLsizei n, GLuint *ids)
+void GL_APIENTRY GenTransformFeedbacks(GLsizei n, GLuint *ids)
 {
 	TRACE("(GLsizei n = %d, const GLuint *ids = %p)", n, ids);
 
@@ -3391,7 +3391,7 @@
 	}
 }
 
-GLboolean IsTransformFeedback(GLuint id)
+GLboolean GL_APIENTRY IsTransformFeedback(GLuint id)
 {
 	TRACE("(GLuint id = %d)", id);
 
@@ -3415,7 +3415,7 @@
 	return GL_FALSE;
 }
 
-void PauseTransformFeedback(void)
+void GL_APIENTRY PauseTransformFeedback(void)
 {
 	TRACE("()");
 
@@ -3436,7 +3436,7 @@
 	}
 }
 
-void ResumeTransformFeedback(void)
+void GL_APIENTRY ResumeTransformFeedback(void)
 {
 	TRACE("()");
 
@@ -3457,7 +3457,7 @@
 	}
 }
 
-void GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)
+void GL_APIENTRY GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)
 {
 	TRACE("(GLuint program = %d, GLsizei bufSize = %d, GLsizei *length = %p, GLenum *binaryFormat = %p, void *binary = %p)",
 	      program, bufSize, length, binaryFormat, binary);
@@ -3483,7 +3483,7 @@
 	return error(GL_INVALID_OPERATION);
 }
 
-void ProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
+void GL_APIENTRY ProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
 {
 	TRACE("(GLuint program = %d, GLenum binaryFormat = 0x%X, const void *binary = %p, GLsizei length = %d)",
 	      program, binaryFormat, binaryFormat, length);
@@ -3509,7 +3509,7 @@
 	return error(GL_INVALID_ENUM);
 }
 
-void ProgramParameteri(GLuint program, GLenum pname, GLint value)
+void GL_APIENTRY ProgramParameteri(GLuint program, GLenum pname, GLint value)
 {
 	TRACE("(GLuint program = %d, GLenum pname = 0x%X, GLint value = %d)",
 	      program, pname, value);
@@ -3540,7 +3540,7 @@
 	}
 }
 
-void InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
+void GL_APIENTRY InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
 {
 	TRACE("(GLenum target = 0x%X, GLsizei numAttachments = %d, const GLenum *attachments = %p, GLint x = %d, GLint y = %d, GLsizei width = %d, GLsizei height = %d)",
 	      target, numAttachments, attachments, x, y, width, height);
@@ -3608,7 +3608,7 @@
 	}
 }
 
-void InvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments)
+void GL_APIENTRY InvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments)
 {
 	TRACE("(GLenum target = 0x%X, GLsizei numAttachments = %d, const GLenum *attachments = %p)",
 	      target, numAttachments, attachments);
@@ -3616,7 +3616,7 @@
 	InvalidateSubFramebuffer(target, numAttachments, attachments, 0, 0, std::numeric_limits<GLsizei>::max(), std::numeric_limits<GLsizei>::max());
 }
 
-void TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+void GL_APIENTRY TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
 {
 	TRACE("(GLenum target = 0x%X, GLsizei levels = %d, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d)",
 	      target, levels, internalformat, width, height);
@@ -3704,7 +3704,7 @@
 	}
 }
 
-void TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
+void GL_APIENTRY TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
 {
 	TRACE("(GLenum target = 0x%X, GLsizei levels = %d, GLenum internalformat = 0x%X, GLsizei width = %d, GLsizei height = %d, GLsizei depth = %d)",
 	      target, levels, internalformat, width, height, depth);
@@ -3777,7 +3777,7 @@
 	}
 }
 
-void GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)
+void GL_APIENTRY GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)
 {
 	TRACE("(GLenum target = 0x%X, GLenum internalformat = 0x%X, GLenum pname = 0x%X, GLsizei bufSize = %d, GLint *params = %p)",
 	      target, internalformat, pname, bufSize, params);