blob: 318eb50e13c59ce2ba30a8191d59b6b1d503fa90 [file] [log] [blame]
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "precomp.hpp"
#include "gl_core_3_1.hpp"
#ifdef HAVE_OPENGL
#ifdef __APPLE__
#include <dlfcn.h>
static void* AppleGLGetProcAddress (const char* name)
{
static bool initialized = false;
static void * handle = NULL;
if (!handle)
{
if (!initialized)
{
initialized = true;
const char * const path = "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL";
handle = dlopen(path, RTLD_LAZY | RTLD_GLOBAL);
}
if (!handle)
return NULL;
}
return dlsym(handle, name);
}
#endif // __APPLE__
#if defined(__sgi) || defined (__sun)
#include <dlfcn.h>
#include <stdio.h>
static void* SunGetProcAddress (const char* name)
{
typedef void* (func_t*)(const GLubyte*);
static void* h = 0;
static func_t gpa = 0;
if (!h)
{
h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL);
if (!h)
return 0;
gpa = (func_t) dlsym(h, "glXGetProcAddress");
}
return gpa ? gpa((const GLubyte*) name) : dlsym(h, name);
}
#endif // __sgi || __sun
#if defined(_WIN32)
#ifdef _MSC_VER
#pragma warning(disable: 4055)
#pragma warning(disable: 4054)
#endif
static int TestPointer(const PROC pTest)
{
if(!pTest)
return 0;
ptrdiff_t iTest = (ptrdiff_t) pTest;
if (iTest == 1 || iTest == 2 || iTest == 3 || iTest == -1)
return 0;
return 1;
}
static PROC WinGetProcAddress(const char* name)
{
PROC pFunc = wglGetProcAddress((LPCSTR) name);
if (TestPointer(pFunc))
return pFunc;
HMODULE glMod = GetModuleHandleA("OpenGL32.dll");
return (PROC) GetProcAddress(glMod, (LPCSTR) name);
}
#endif // _WIN32
#if defined(_WIN32)
#define CV_GL_GET_PROC_ADDRESS(name) WinGetProcAddress(name)
#elif defined(__APPLE__)
#define CV_GL_GET_PROC_ADDRESS(name) AppleGLGetProcAddress(name)
#elif defined(__sgi) || defined(__sun)
#define CV_GL_GET_PROC_ADDRESS(name) SunGetProcAddress(name)
#else // GLX
#include <GL/glx.h>
#define CV_GL_GET_PROC_ADDRESS(name) glXGetProcAddressARB((const GLubyte*) name)
#endif
static void* IntGetProcAddress(const char* name)
{
void* func = (void*) CV_GL_GET_PROC_ADDRESS(name);
if (!func)
{
CV_Error(cv::Error::OpenGlApiCallError, cv::format("Can't load OpenGL extension [%s]", name) );
}
return func;
}
#else
static void* IntGetProcAddress(const char*)
{
CV_Error(cv::Error::OpenGlNotSupported, "The library is compiled without OpenGL support");
return 0;
}
#endif
namespace gl
{
//////////////////////////////////////////////
// Function pointer types
// Extension: 1.1
typedef void (CODEGEN_FUNCPTR *PFNCULLFACEPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNFRONTFACEPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNHINTPROC)(GLenum , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNLINEWIDTHPROC)(GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNPOINTSIZEPROC)(GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNPOLYGONMODEPROC)(GLenum , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNSCISSORPROC)(GLint , GLint , GLsizei , GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERFPROC)(GLenum , GLenum , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERFVPROC)(GLenum , GLenum , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERIPROC)(GLenum , GLenum , GLint );
typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERIVPROC)(GLenum , GLenum , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNTEXIMAGE1DPROC)(GLenum , GLint , GLint , GLsizei , GLint , GLenum , GLenum , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNTEXIMAGE2DPROC)(GLenum , GLint , GLint , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNDRAWBUFFERPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNCLEARPROC)(GLbitfield );
typedef void (CODEGEN_FUNCPTR *PFNCLEARCOLORPROC)(GLfloat , GLfloat , GLfloat , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNCLEARSTENCILPROC)(GLint );
typedef void (CODEGEN_FUNCPTR *PFNCLEARDEPTHPROC)(GLdouble );
typedef void (CODEGEN_FUNCPTR *PFNSTENCILMASKPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNCOLORMASKPROC)(GLboolean , GLboolean , GLboolean , GLboolean );
typedef void (CODEGEN_FUNCPTR *PFNDEPTHMASKPROC)(GLboolean );
typedef void (CODEGEN_FUNCPTR *PFNDISABLEPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNENABLEPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNFINISHPROC)();
typedef void (CODEGEN_FUNCPTR *PFNFLUSHPROC)();
typedef void (CODEGEN_FUNCPTR *PFNBLENDFUNCPROC)(GLenum , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNLOGICOPPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNSTENCILFUNCPROC)(GLenum , GLint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNSTENCILOPPROC)(GLenum , GLenum , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNDEPTHFUNCPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNPIXELSTOREFPROC)(GLenum , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNPIXELSTOREIPROC)(GLenum , GLint );
typedef void (CODEGEN_FUNCPTR *PFNREADBUFFERPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNREADPIXELSPROC)(GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNGETBOOLEANVPROC)(GLenum , GLboolean *);
typedef void (CODEGEN_FUNCPTR *PFNGETDOUBLEVPROC)(GLenum , GLdouble *);
typedef GLenum (CODEGEN_FUNCPTR *PFNGETERRORPROC)();
typedef void (CODEGEN_FUNCPTR *PFNGETFLOATVPROC)(GLenum , GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNGETINTEGERVPROC)(GLenum , GLint *);
typedef const GLubyte * (CODEGEN_FUNCPTR *PFNGETSTRINGPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNGETTEXIMAGEPROC)(GLenum , GLint , GLenum , GLenum , GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNGETTEXPARAMETERFVPROC)(GLenum , GLenum , GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNGETTEXPARAMETERIVPROC)(GLenum , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETTEXLEVELPARAMETERFVPROC)(GLenum , GLint , GLenum , GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNGETTEXLEVELPARAMETERIVPROC)(GLenum , GLint , GLenum , GLint *);
typedef GLboolean (CODEGEN_FUNCPTR *PFNISENABLEDPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNDEPTHRANGEPROC)(GLdouble , GLdouble );
typedef void (CODEGEN_FUNCPTR *PFNVIEWPORTPROC)(GLint , GLint , GLsizei , GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNDRAWARRAYSPROC)(GLenum , GLint , GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNDRAWELEMENTSPROC)(GLenum , GLsizei , GLenum , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNGETPOINTERVPROC)(GLenum , GLvoid* *);
typedef void (CODEGEN_FUNCPTR *PFNPOLYGONOFFSETPROC)(GLfloat , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXIMAGE1DPROC)(GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLint );
typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXIMAGE2DPROC)(GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLsizei , GLint );
typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXSUBIMAGE1DPROC)(GLenum , GLint , GLint , GLint , GLint , GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXSUBIMAGE2DPROC)(GLenum , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNTEXSUBIMAGE1DPROC)(GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNTEXSUBIMAGE2DPROC)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNBINDTEXTUREPROC)(GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDELETETEXTURESPROC)(GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNGENTEXTURESPROC)(GLsizei , GLuint *);
typedef GLboolean (CODEGEN_FUNCPTR *PFNISTEXTUREPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNINDEXUBPROC)(GLubyte );
typedef void (CODEGEN_FUNCPTR *PFNINDEXUBVPROC)(const GLubyte *);
// Extension: 1.2
typedef void (CODEGEN_FUNCPTR *PFNBLENDCOLORPROC)(GLfloat , GLfloat , GLfloat , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNBLENDEQUATIONPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNDRAWRANGEELEMENTSPROC)(GLenum , GLuint , GLuint , GLsizei , GLenum , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNTEXSUBIMAGE3DPROC)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNCOPYTEXSUBIMAGE3DPROC)(GLenum , GLint , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei );
// Extension: 1.3
typedef void (CODEGEN_FUNCPTR *PFNACTIVETEXTUREPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNSAMPLECOVERAGEPROC)(GLfloat , GLboolean );
typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXIMAGE3DPROC)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXIMAGE2DPROC)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXIMAGE1DPROC)(GLenum , GLint , GLenum , GLsizei , GLint , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum , GLint , GLint , GLsizei , GLenum , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNGETCOMPRESSEDTEXIMAGEPROC)(GLenum , GLint , GLvoid *);
// Extension: 1.4
typedef void (CODEGEN_FUNCPTR *PFNBLENDFUNCSEPARATEPROC)(GLenum , GLenum , GLenum , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNMULTIDRAWARRAYSPROC)(GLenum , const GLint *, const GLsizei *, GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNMULTIDRAWELEMENTSPROC)(GLenum , const GLsizei *, GLenum , const GLvoid* const *, GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNPOINTPARAMETERFPROC)(GLenum , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNPOINTPARAMETERFVPROC)(GLenum , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNPOINTPARAMETERIPROC)(GLenum , GLint );
typedef void (CODEGEN_FUNCPTR *PFNPOINTPARAMETERIVPROC)(GLenum , const GLint *);
// Extension: 1.5
typedef void (CODEGEN_FUNCPTR *PFNGENQUERIESPROC)(GLsizei , GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNDELETEQUERIESPROC)(GLsizei , const GLuint *);
typedef GLboolean (CODEGEN_FUNCPTR *PFNISQUERYPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNBEGINQUERYPROC)(GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNENDQUERYPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNGETQUERYIVPROC)(GLenum , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETQUERYOBJECTIVPROC)(GLuint , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETQUERYOBJECTUIVPROC)(GLuint , GLenum , GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNBINDBUFFERPROC)(GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDELETEBUFFERSPROC)(GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNGENBUFFERSPROC)(GLsizei , GLuint *);
typedef GLboolean (CODEGEN_FUNCPTR *PFNISBUFFERPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNBUFFERDATAPROC)(GLenum , GLsizeiptr , const GLvoid *, GLenum );
typedef void (CODEGEN_FUNCPTR *PFNBUFFERSUBDATAPROC)(GLenum , GLintptr , GLsizeiptr , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNGETBUFFERSUBDATAPROC)(GLenum , GLintptr , GLsizeiptr , GLvoid *);
typedef GLvoid* (CODEGEN_FUNCPTR *PFNMAPBUFFERPROC)(GLenum , GLenum );
typedef GLboolean (CODEGEN_FUNCPTR *PFNUNMAPBUFFERPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNGETBUFFERPARAMETERIVPROC)(GLenum , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETBUFFERPOINTERVPROC)(GLenum , GLenum , GLvoid* *);
// Extension: 2.0
typedef void (CODEGEN_FUNCPTR *PFNBLENDEQUATIONSEPARATEPROC)(GLenum , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNDRAWBUFFERSPROC)(GLsizei , const GLenum *);
typedef void (CODEGEN_FUNCPTR *PFNSTENCILOPSEPARATEPROC)(GLenum , GLenum , GLenum , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNSTENCILFUNCSEPARATEPROC)(GLenum , GLenum , GLint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNSTENCILMASKSEPARATEPROC)(GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNATTACHSHADERPROC)(GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNBINDATTRIBLOCATIONPROC)(GLuint , GLuint , const GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNCOMPILESHADERPROC)(GLuint );
typedef GLuint (CODEGEN_FUNCPTR *PFNCREATEPROGRAMPROC)();
typedef GLuint (CODEGEN_FUNCPTR *PFNCREATESHADERPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNDELETEPROGRAMPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDELETESHADERPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDETACHSHADERPROC)(GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDISABLEVERTEXATTRIBARRAYPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNENABLEVERTEXATTRIBARRAYPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEATTRIBPROC)(GLuint , GLuint , GLsizei , GLsizei *, GLint *, GLenum *, GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMPROC)(GLuint , GLuint , GLsizei , GLsizei *, GLint *, GLenum *, GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNGETATTACHEDSHADERSPROC)(GLuint , GLsizei , GLsizei *, GLuint *);
typedef GLint (CODEGEN_FUNCPTR *PFNGETATTRIBLOCATIONPROC)(GLuint , const GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNGETPROGRAMIVPROC)(GLuint , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETPROGRAMINFOLOGPROC)(GLuint , GLsizei , GLsizei *, GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNGETSHADERIVPROC)(GLuint , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETSHADERINFOLOGPROC)(GLuint , GLsizei , GLsizei *, GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNGETSHADERSOURCEPROC)(GLuint , GLsizei , GLsizei *, GLchar *);
typedef GLint (CODEGEN_FUNCPTR *PFNGETUNIFORMLOCATIONPROC)(GLuint , const GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNGETUNIFORMFVPROC)(GLuint , GLint , GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNGETUNIFORMIVPROC)(GLuint , GLint , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBDVPROC)(GLuint , GLenum , GLdouble *);
typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBFVPROC)(GLuint , GLenum , GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBIVPROC)(GLuint , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBPOINTERVPROC)(GLuint , GLenum , GLvoid* *);
typedef GLboolean (CODEGEN_FUNCPTR *PFNISPROGRAMPROC)(GLuint );
typedef GLboolean (CODEGEN_FUNCPTR *PFNISSHADERPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNLINKPROGRAMPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNSHADERSOURCEPROC)(GLuint , GLsizei , const GLchar* const *, const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNUSEPROGRAMPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1FPROC)(GLint , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2FPROC)(GLint , GLfloat , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3FPROC)(GLint , GLfloat , GLfloat , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4FPROC)(GLint , GLfloat , GLfloat , GLfloat , GLfloat );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1IPROC)(GLint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2IPROC)(GLint , GLint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3IPROC)(GLint , GLint , GLint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4IPROC)(GLint , GLint , GLint , GLint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1FVPROC)(GLint , GLsizei , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2FVPROC)(GLint , GLsizei , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3FVPROC)(GLint , GLsizei , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4FVPROC)(GLint , GLsizei , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1IVPROC)(GLint , GLsizei , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2IVPROC)(GLint , GLsizei , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3IVPROC)(GLint , GLsizei , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4IVPROC)(GLint , GLsizei , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX2FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX3FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX4FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNVALIDATEPROGRAMPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBPOINTERPROC)(GLuint , GLint , GLenum , GLboolean , GLsizei , const GLvoid *);
// Extension: 2.1
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX2X3FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX3X2FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX2X4FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX4X2FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX3X4FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMMATRIX4X3FVPROC)(GLint , GLsizei , GLboolean , const GLfloat *);
// Extension: ARB_vertex_array_object
typedef void (CODEGEN_FUNCPTR *PFNBINDVERTEXARRAYPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDELETEVERTEXARRAYSPROC)(GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNGENVERTEXARRAYSPROC)(GLsizei , GLuint *);
typedef GLboolean (CODEGEN_FUNCPTR *PFNISVERTEXARRAYPROC)(GLuint );
// Extension: ARB_map_buffer_range
typedef GLvoid* (CODEGEN_FUNCPTR *PFNMAPBUFFERRANGEPROC)(GLenum , GLintptr , GLsizeiptr , GLbitfield );
typedef void (CODEGEN_FUNCPTR *PFNFLUSHMAPPEDBUFFERRANGEPROC)(GLenum , GLintptr , GLsizeiptr );
// Extension: ARB_framebuffer_object
typedef GLboolean (CODEGEN_FUNCPTR *PFNISRENDERBUFFERPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNBINDRENDERBUFFERPROC)(GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDELETERENDERBUFFERSPROC)(GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNGENRENDERBUFFERSPROC)(GLsizei , GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNRENDERBUFFERSTORAGEPROC)(GLenum , GLenum , GLsizei , GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNGETRENDERBUFFERPARAMETERIVPROC)(GLenum , GLenum , GLint *);
typedef GLboolean (CODEGEN_FUNCPTR *PFNISFRAMEBUFFERPROC)(GLuint );
typedef void (CODEGEN_FUNCPTR *PFNBINDFRAMEBUFFERPROC)(GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDELETEFRAMEBUFFERSPROC)(GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNGENFRAMEBUFFERSPROC)(GLsizei , GLuint *);
typedef GLenum (CODEGEN_FUNCPTR *PFNCHECKFRAMEBUFFERSTATUSPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURE1DPROC)(GLenum , GLenum , GLenum , GLuint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURE2DPROC)(GLenum , GLenum , GLenum , GLuint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURE3DPROC)(GLenum , GLenum , GLenum , GLuint , GLint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERRENDERBUFFERPROC)(GLenum , GLenum , GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum , GLenum , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGENERATEMIPMAPPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNBLITFRAMEBUFFERPROC)(GLint , GLint , GLint , GLint , GLint , GLint , GLint , GLint , GLbitfield , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum , GLsizei , GLenum , GLsizei , GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNFRAMEBUFFERTEXTURELAYERPROC)(GLenum , GLenum , GLuint , GLint , GLint );
// Extension: 3.0
typedef void (CODEGEN_FUNCPTR *PFNCOLORMASKIPROC)(GLuint , GLboolean , GLboolean , GLboolean , GLboolean );
typedef void (CODEGEN_FUNCPTR *PFNGETBOOLEANI_VPROC)(GLenum , GLuint , GLboolean *);
typedef void (CODEGEN_FUNCPTR *PFNGETINTEGERI_VPROC)(GLenum , GLuint , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNENABLEIPROC)(GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNDISABLEIPROC)(GLenum , GLuint );
typedef GLboolean (CODEGEN_FUNCPTR *PFNISENABLEDIPROC)(GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNBEGINTRANSFORMFEEDBACKPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNENDTRANSFORMFEEDBACKPROC)();
typedef void (CODEGEN_FUNCPTR *PFNBINDBUFFERRANGEPROC)(GLenum , GLuint , GLuint , GLintptr , GLsizeiptr );
typedef void (CODEGEN_FUNCPTR *PFNBINDBUFFERBASEPROC)(GLenum , GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNTRANSFORMFEEDBACKVARYINGSPROC)(GLuint , GLsizei , const GLchar* const *, GLenum );
typedef void (CODEGEN_FUNCPTR *PFNGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint , GLuint , GLsizei , GLsizei *, GLsizei *, GLenum *, GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNCLAMPCOLORPROC)(GLenum , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNBEGINCONDITIONALRENDERPROC)(GLuint , GLenum );
typedef void (CODEGEN_FUNCPTR *PFNENDCONDITIONALRENDERPROC)();
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBIPOINTERPROC)(GLuint , GLint , GLenum , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBIIVPROC)(GLuint , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETVERTEXATTRIBIUIVPROC)(GLuint , GLenum , GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI1IPROC)(GLuint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI2IPROC)(GLuint , GLint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI3IPROC)(GLuint , GLint , GLint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4IPROC)(GLuint , GLint , GLint , GLint , GLint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI1UIPROC)(GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI2UIPROC)(GLuint , GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI3UIPROC)(GLuint , GLuint , GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4UIPROC)(GLuint , GLuint , GLuint , GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI1IVPROC)(GLuint , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI2IVPROC)(GLuint , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI3IVPROC)(GLuint , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4IVPROC)(GLuint , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI1UIVPROC)(GLuint , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI2UIVPROC)(GLuint , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI3UIVPROC)(GLuint , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4UIVPROC)(GLuint , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4BVPROC)(GLuint , const GLbyte *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4SVPROC)(GLuint , const GLshort *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4UBVPROC)(GLuint , const GLubyte *);
typedef void (CODEGEN_FUNCPTR *PFNVERTEXATTRIBI4USVPROC)(GLuint , const GLushort *);
typedef void (CODEGEN_FUNCPTR *PFNGETUNIFORMUIVPROC)(GLuint , GLint , GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNBINDFRAGDATALOCATIONPROC)(GLuint , GLuint , const GLchar *);
typedef GLint (CODEGEN_FUNCPTR *PFNGETFRAGDATALOCATIONPROC)(GLuint , const GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1UIPROC)(GLint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2UIPROC)(GLint , GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3UIPROC)(GLint , GLuint , GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4UIPROC)(GLint , GLuint , GLuint , GLuint , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM1UIVPROC)(GLint , GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM2UIVPROC)(GLint , GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM3UIVPROC)(GLint , GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORM4UIVPROC)(GLint , GLsizei , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERIIVPROC)(GLenum , GLenum , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNTEXPARAMETERIUIVPROC)(GLenum , GLenum , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNGETTEXPARAMETERIIVPROC)(GLenum , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETTEXPARAMETERIUIVPROC)(GLenum , GLenum , GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNCLEARBUFFERIVPROC)(GLenum , GLint , const GLint *);
typedef void (CODEGEN_FUNCPTR *PFNCLEARBUFFERUIVPROC)(GLenum , GLint , const GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNCLEARBUFFERFVPROC)(GLenum , GLint , const GLfloat *);
typedef void (CODEGEN_FUNCPTR *PFNCLEARBUFFERFIPROC)(GLenum , GLint , GLfloat , GLint );
typedef const GLubyte * (CODEGEN_FUNCPTR *PFNGETSTRINGIPROC)(GLenum , GLuint );
// Extension: ARB_uniform_buffer_object
typedef void (CODEGEN_FUNCPTR *PFNGETUNIFORMINDICESPROC)(GLuint , GLsizei , const GLchar* const *, GLuint *);
typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMSIVPROC)(GLuint , GLsizei , const GLuint *, GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMNAMEPROC)(GLuint , GLuint , GLsizei , GLsizei *, GLchar *);
typedef GLuint (CODEGEN_FUNCPTR *PFNGETUNIFORMBLOCKINDEXPROC)(GLuint , const GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMBLOCKIVPROC)(GLuint , GLuint , GLenum , GLint *);
typedef void (CODEGEN_FUNCPTR *PFNGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint , GLuint , GLsizei , GLsizei *, GLchar *);
typedef void (CODEGEN_FUNCPTR *PFNUNIFORMBLOCKBINDINGPROC)(GLuint , GLuint , GLuint );
// Extension: ARB_copy_buffer
typedef void (CODEGEN_FUNCPTR *PFNCOPYBUFFERSUBDATAPROC)(GLenum , GLenum , GLintptr , GLintptr , GLsizeiptr );
// Extension: 3.1
typedef void (CODEGEN_FUNCPTR *PFNDRAWARRAYSINSTANCEDPROC)(GLenum , GLint , GLsizei , GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNDRAWELEMENTSINSTANCEDPROC)(GLenum , GLsizei , GLenum , const GLvoid *, GLsizei );
typedef void (CODEGEN_FUNCPTR *PFNTEXBUFFERPROC)(GLenum , GLenum , GLuint );
typedef void (CODEGEN_FUNCPTR *PFNPRIMITIVERESTARTINDEXPROC)(GLuint );
// Legacy
typedef void (CODEGEN_FUNCPTR *PFNENABLECLIENTSTATEPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNDISABLECLIENTSTATEPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNVERTEXPOINTERPROC)(GLint , GLenum , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNNORMALPOINTERPROC)(GLenum , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNCOLORPOINTERPROC)(GLint , GLenum , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNTEXCOORDPOINTERPROC)(GLint , GLenum , GLsizei , const GLvoid *);
typedef void (CODEGEN_FUNCPTR *PFNTEXENVIPROC)(GLenum , GLenum , GLint );
typedef void (CODEGEN_FUNCPTR *PFNMATRIXMODEPROC)(GLenum );
typedef void (CODEGEN_FUNCPTR *PFNLOADIDENTITYPROC)(void);
typedef void (CODEGEN_FUNCPTR *PFNORTHOPROC)(GLdouble , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble );
typedef void (CODEGEN_FUNCPTR *PFNCOLOR3DPROC)(GLdouble , GLdouble , GLdouble );
//////////////////////////////////////////////
// Function pointers
// Extension: 1.1
PFNCULLFACEPROC CullFace;
PFNFRONTFACEPROC FrontFace;
PFNHINTPROC Hint;
PFNLINEWIDTHPROC LineWidth;
PFNPOINTSIZEPROC PointSize;
PFNPOLYGONMODEPROC PolygonMode;
PFNSCISSORPROC Scissor;
PFNTEXPARAMETERFPROC TexParameterf;
PFNTEXPARAMETERFVPROC TexParameterfv;
PFNTEXPARAMETERIPROC TexParameteri;
PFNTEXPARAMETERIVPROC TexParameteriv;
PFNTEXIMAGE1DPROC TexImage1D;
PFNTEXIMAGE2DPROC TexImage2D;
PFNDRAWBUFFERPROC DrawBuffer;
PFNCLEARPROC Clear;
PFNCLEARCOLORPROC ClearColor;
PFNCLEARSTENCILPROC ClearStencil;
PFNCLEARDEPTHPROC ClearDepth;
PFNSTENCILMASKPROC StencilMask;
PFNCOLORMASKPROC ColorMask;
PFNDEPTHMASKPROC DepthMask;
PFNDISABLEPROC Disable;
PFNENABLEPROC Enable;
PFNFINISHPROC Finish;
PFNFLUSHPROC Flush;
PFNBLENDFUNCPROC BlendFunc;
PFNLOGICOPPROC LogicOp;
PFNSTENCILFUNCPROC StencilFunc;
PFNSTENCILOPPROC StencilOp;
PFNDEPTHFUNCPROC DepthFunc;
PFNPIXELSTOREFPROC PixelStoref;
PFNPIXELSTOREIPROC PixelStorei;
PFNREADBUFFERPROC ReadBuffer;
PFNREADPIXELSPROC ReadPixels;
PFNGETBOOLEANVPROC GetBooleanv;
PFNGETDOUBLEVPROC GetDoublev;
PFNGETERRORPROC GetError;
PFNGETFLOATVPROC GetFloatv;
PFNGETINTEGERVPROC GetIntegerv;
PFNGETSTRINGPROC GetString;
PFNGETTEXIMAGEPROC GetTexImage;
PFNGETTEXPARAMETERFVPROC GetTexParameterfv;
PFNGETTEXPARAMETERIVPROC GetTexParameteriv;
PFNGETTEXLEVELPARAMETERFVPROC GetTexLevelParameterfv;
PFNGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv;
PFNISENABLEDPROC IsEnabled;
PFNDEPTHRANGEPROC DepthRange;
PFNVIEWPORTPROC Viewport;
PFNDRAWARRAYSPROC DrawArrays;
PFNDRAWELEMENTSPROC DrawElements;
PFNGETPOINTERVPROC GetPointerv;
PFNPOLYGONOFFSETPROC PolygonOffset;
PFNCOPYTEXIMAGE1DPROC CopyTexImage1D;
PFNCOPYTEXIMAGE2DPROC CopyTexImage2D;
PFNCOPYTEXSUBIMAGE1DPROC CopyTexSubImage1D;
PFNCOPYTEXSUBIMAGE2DPROC CopyTexSubImage2D;
PFNTEXSUBIMAGE1DPROC TexSubImage1D;
PFNTEXSUBIMAGE2DPROC TexSubImage2D;
PFNBINDTEXTUREPROC BindTexture;
PFNDELETETEXTURESPROC DeleteTextures;
PFNGENTEXTURESPROC GenTextures;
PFNISTEXTUREPROC IsTexture;
PFNINDEXUBPROC Indexub;
PFNINDEXUBVPROC Indexubv;
// Extension: 1.2
PFNBLENDCOLORPROC BlendColor;
PFNBLENDEQUATIONPROC BlendEquation;
PFNDRAWRANGEELEMENTSPROC DrawRangeElements;
PFNTEXSUBIMAGE3DPROC TexSubImage3D;
PFNCOPYTEXSUBIMAGE3DPROC CopyTexSubImage3D;
// Extension: 1.3
PFNACTIVETEXTUREPROC ActiveTexture;
PFNSAMPLECOVERAGEPROC SampleCoverage;
PFNCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D;
PFNCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D;
PFNCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D;
PFNCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D;
PFNCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D;
PFNCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D;
PFNGETCOMPRESSEDTEXIMAGEPROC GetCompressedTexImage;
// Extension: 1.4
PFNBLENDFUNCSEPARATEPROC BlendFuncSeparate;
PFNMULTIDRAWARRAYSPROC MultiDrawArrays;
PFNMULTIDRAWELEMENTSPROC MultiDrawElements;
PFNPOINTPARAMETERFPROC PointParameterf;
PFNPOINTPARAMETERFVPROC PointParameterfv;
PFNPOINTPARAMETERIPROC PointParameteri;
PFNPOINTPARAMETERIVPROC PointParameteriv;
// Extension: 1.5
PFNGENQUERIESPROC GenQueries;
PFNDELETEQUERIESPROC DeleteQueries;
PFNISQUERYPROC IsQuery;
PFNBEGINQUERYPROC BeginQuery;
PFNENDQUERYPROC EndQuery;
PFNGETQUERYIVPROC GetQueryiv;
PFNGETQUERYOBJECTIVPROC GetQueryObjectiv;
PFNGETQUERYOBJECTUIVPROC GetQueryObjectuiv;
PFNBINDBUFFERPROC BindBuffer;
PFNDELETEBUFFERSPROC DeleteBuffers;
PFNGENBUFFERSPROC GenBuffers;
PFNISBUFFERPROC IsBuffer;
PFNBUFFERDATAPROC BufferData;
PFNBUFFERSUBDATAPROC BufferSubData;
PFNGETBUFFERSUBDATAPROC GetBufferSubData;
PFNMAPBUFFERPROC MapBuffer;
PFNUNMAPBUFFERPROC UnmapBuffer;
PFNGETBUFFERPARAMETERIVPROC GetBufferParameteriv;
PFNGETBUFFERPOINTERVPROC GetBufferPointerv;
// Extension: 2.0
PFNBLENDEQUATIONSEPARATEPROC BlendEquationSeparate;
PFNDRAWBUFFERSPROC DrawBuffers;
PFNSTENCILOPSEPARATEPROC StencilOpSeparate;
PFNSTENCILFUNCSEPARATEPROC StencilFuncSeparate;
PFNSTENCILMASKSEPARATEPROC StencilMaskSeparate;
PFNATTACHSHADERPROC AttachShader;
PFNBINDATTRIBLOCATIONPROC BindAttribLocation;
PFNCOMPILESHADERPROC CompileShader;
PFNCREATEPROGRAMPROC CreateProgram;
PFNCREATESHADERPROC CreateShader;
PFNDELETEPROGRAMPROC DeleteProgram;
PFNDELETESHADERPROC DeleteShader;
PFNDETACHSHADERPROC DetachShader;
PFNDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray;
PFNENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray;
PFNGETACTIVEATTRIBPROC GetActiveAttrib;
PFNGETACTIVEUNIFORMPROC GetActiveUniform;
PFNGETATTACHEDSHADERSPROC GetAttachedShaders;
PFNGETATTRIBLOCATIONPROC GetAttribLocation;
PFNGETPROGRAMIVPROC GetProgramiv;
PFNGETPROGRAMINFOLOGPROC GetProgramInfoLog;
PFNGETSHADERIVPROC GetShaderiv;
PFNGETSHADERINFOLOGPROC GetShaderInfoLog;
PFNGETSHADERSOURCEPROC GetShaderSource;
PFNGETUNIFORMLOCATIONPROC GetUniformLocation;
PFNGETUNIFORMFVPROC GetUniformfv;
PFNGETUNIFORMIVPROC GetUniformiv;
PFNGETVERTEXATTRIBDVPROC GetVertexAttribdv;
PFNGETVERTEXATTRIBFVPROC GetVertexAttribfv;
PFNGETVERTEXATTRIBIVPROC GetVertexAttribiv;
PFNGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv;
PFNISPROGRAMPROC IsProgram;
PFNISSHADERPROC IsShader;
PFNLINKPROGRAMPROC LinkProgram;
PFNSHADERSOURCEPROC ShaderSource;
PFNUSEPROGRAMPROC UseProgram;
PFNUNIFORM1FPROC Uniform1f;
PFNUNIFORM2FPROC Uniform2f;
PFNUNIFORM3FPROC Uniform3f;
PFNUNIFORM4FPROC Uniform4f;
PFNUNIFORM1IPROC Uniform1i;
PFNUNIFORM2IPROC Uniform2i;
PFNUNIFORM3IPROC Uniform3i;
PFNUNIFORM4IPROC Uniform4i;
PFNUNIFORM1FVPROC Uniform1fv;
PFNUNIFORM2FVPROC Uniform2fv;
PFNUNIFORM3FVPROC Uniform3fv;
PFNUNIFORM4FVPROC Uniform4fv;
PFNUNIFORM1IVPROC Uniform1iv;
PFNUNIFORM2IVPROC Uniform2iv;
PFNUNIFORM3IVPROC Uniform3iv;
PFNUNIFORM4IVPROC Uniform4iv;
PFNUNIFORMMATRIX2FVPROC UniformMatrix2fv;
PFNUNIFORMMATRIX3FVPROC UniformMatrix3fv;
PFNUNIFORMMATRIX4FVPROC UniformMatrix4fv;
PFNVALIDATEPROGRAMPROC ValidateProgram;
PFNVERTEXATTRIBPOINTERPROC VertexAttribPointer;
// Extension: 2.1
PFNUNIFORMMATRIX2X3FVPROC UniformMatrix2x3fv;
PFNUNIFORMMATRIX3X2FVPROC UniformMatrix3x2fv;
PFNUNIFORMMATRIX2X4FVPROC UniformMatrix2x4fv;
PFNUNIFORMMATRIX4X2FVPROC UniformMatrix4x2fv;
PFNUNIFORMMATRIX3X4FVPROC UniformMatrix3x4fv;
PFNUNIFORMMATRIX4X3FVPROC UniformMatrix4x3fv;
// Extension: ARB_vertex_array_object
PFNBINDVERTEXARRAYPROC BindVertexArray;
PFNDELETEVERTEXARRAYSPROC DeleteVertexArrays;
PFNGENVERTEXARRAYSPROC GenVertexArrays;
PFNISVERTEXARRAYPROC IsVertexArray;
// Extension: ARB_map_buffer_range
PFNMAPBUFFERRANGEPROC MapBufferRange;
PFNFLUSHMAPPEDBUFFERRANGEPROC FlushMappedBufferRange;
// Extension: ARB_framebuffer_object
PFNISRENDERBUFFERPROC IsRenderbuffer;
PFNBINDRENDERBUFFERPROC BindRenderbuffer;
PFNDELETERENDERBUFFERSPROC DeleteRenderbuffers;
PFNGENRENDERBUFFERSPROC GenRenderbuffers;
PFNRENDERBUFFERSTORAGEPROC RenderbufferStorage;
PFNGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv;
PFNISFRAMEBUFFERPROC IsFramebuffer;
PFNBINDFRAMEBUFFERPROC BindFramebuffer;
PFNDELETEFRAMEBUFFERSPROC DeleteFramebuffers;
PFNGENFRAMEBUFFERSPROC GenFramebuffers;
PFNCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus;
PFNFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D;
PFNFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D;
PFNFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D;
PFNFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer;
PFNGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv;
PFNGENERATEMIPMAPPROC GenerateMipmap;
PFNBLITFRAMEBUFFERPROC BlitFramebuffer;
PFNRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample;
PFNFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer;
// Extension: 3.0
PFNCOLORMASKIPROC ColorMaski;
PFNGETBOOLEANI_VPROC GetBooleani_v;
PFNGETINTEGERI_VPROC GetIntegeri_v;
PFNENABLEIPROC Enablei;
PFNDISABLEIPROC Disablei;
PFNISENABLEDIPROC IsEnabledi;
PFNBEGINTRANSFORMFEEDBACKPROC BeginTransformFeedback;
PFNENDTRANSFORMFEEDBACKPROC EndTransformFeedback;
PFNBINDBUFFERRANGEPROC BindBufferRange;
PFNBINDBUFFERBASEPROC BindBufferBase;
PFNTRANSFORMFEEDBACKVARYINGSPROC TransformFeedbackVaryings;
PFNGETTRANSFORMFEEDBACKVARYINGPROC GetTransformFeedbackVarying;
PFNCLAMPCOLORPROC ClampColor;
PFNBEGINCONDITIONALRENDERPROC BeginConditionalRender;
PFNENDCONDITIONALRENDERPROC EndConditionalRender;
PFNVERTEXATTRIBIPOINTERPROC VertexAttribIPointer;
PFNGETVERTEXATTRIBIIVPROC GetVertexAttribIiv;
PFNGETVERTEXATTRIBIUIVPROC GetVertexAttribIuiv;
PFNVERTEXATTRIBI1IPROC VertexAttribI1i;
PFNVERTEXATTRIBI2IPROC VertexAttribI2i;
PFNVERTEXATTRIBI3IPROC VertexAttribI3i;
PFNVERTEXATTRIBI4IPROC VertexAttribI4i;
PFNVERTEXATTRIBI1UIPROC VertexAttribI1ui;
PFNVERTEXATTRIBI2UIPROC VertexAttribI2ui;
PFNVERTEXATTRIBI3UIPROC VertexAttribI3ui;
PFNVERTEXATTRIBI4UIPROC VertexAttribI4ui;
PFNVERTEXATTRIBI1IVPROC VertexAttribI1iv;
PFNVERTEXATTRIBI2IVPROC VertexAttribI2iv;
PFNVERTEXATTRIBI3IVPROC VertexAttribI3iv;
PFNVERTEXATTRIBI4IVPROC VertexAttribI4iv;
PFNVERTEXATTRIBI1UIVPROC VertexAttribI1uiv;
PFNVERTEXATTRIBI2UIVPROC VertexAttribI2uiv;
PFNVERTEXATTRIBI3UIVPROC VertexAttribI3uiv;
PFNVERTEXATTRIBI4UIVPROC VertexAttribI4uiv;
PFNVERTEXATTRIBI4BVPROC VertexAttribI4bv;
PFNVERTEXATTRIBI4SVPROC VertexAttribI4sv;
PFNVERTEXATTRIBI4UBVPROC VertexAttribI4ubv;
PFNVERTEXATTRIBI4USVPROC VertexAttribI4usv;
PFNGETUNIFORMUIVPROC GetUniformuiv;
PFNBINDFRAGDATALOCATIONPROC BindFragDataLocation;
PFNGETFRAGDATALOCATIONPROC GetFragDataLocation;
PFNUNIFORM1UIPROC Uniform1ui;
PFNUNIFORM2UIPROC Uniform2ui;
PFNUNIFORM3UIPROC Uniform3ui;
PFNUNIFORM4UIPROC Uniform4ui;
PFNUNIFORM1UIVPROC Uniform1uiv;
PFNUNIFORM2UIVPROC Uniform2uiv;
PFNUNIFORM3UIVPROC Uniform3uiv;
PFNUNIFORM4UIVPROC Uniform4uiv;
PFNTEXPARAMETERIIVPROC TexParameterIiv;
PFNTEXPARAMETERIUIVPROC TexParameterIuiv;
PFNGETTEXPARAMETERIIVPROC GetTexParameterIiv;
PFNGETTEXPARAMETERIUIVPROC GetTexParameterIuiv;
PFNCLEARBUFFERIVPROC ClearBufferiv;
PFNCLEARBUFFERUIVPROC ClearBufferuiv;
PFNCLEARBUFFERFVPROC ClearBufferfv;
PFNCLEARBUFFERFIPROC ClearBufferfi;
PFNGETSTRINGIPROC GetStringi;
// Extension: ARB_uniform_buffer_object
PFNGETUNIFORMINDICESPROC GetUniformIndices;
PFNGETACTIVEUNIFORMSIVPROC GetActiveUniformsiv;
PFNGETACTIVEUNIFORMNAMEPROC GetActiveUniformName;
PFNGETUNIFORMBLOCKINDEXPROC GetUniformBlockIndex;
PFNGETACTIVEUNIFORMBLOCKIVPROC GetActiveUniformBlockiv;
PFNGETACTIVEUNIFORMBLOCKNAMEPROC GetActiveUniformBlockName;
PFNUNIFORMBLOCKBINDINGPROC UniformBlockBinding;
// Extension: ARB_copy_buffer
PFNCOPYBUFFERSUBDATAPROC CopyBufferSubData;
// Extension: 3.1
PFNDRAWARRAYSINSTANCEDPROC DrawArraysInstanced;
PFNDRAWELEMENTSINSTANCEDPROC DrawElementsInstanced;
PFNTEXBUFFERPROC TexBuffer;
PFNPRIMITIVERESTARTINDEXPROC PrimitiveRestartIndex;
// Legacy
PFNENABLECLIENTSTATEPROC EnableClientState;
PFNDISABLECLIENTSTATEPROC DisableClientState;
PFNVERTEXPOINTERPROC VertexPointer;
PFNNORMALPOINTERPROC NormalPointer;
PFNCOLORPOINTERPROC ColorPointer;
PFNTEXCOORDPOINTERPROC TexCoordPointer;
PFNTEXENVIPROC TexEnvi;
PFNMATRIXMODEPROC MatrixMode;
PFNLOADIDENTITYPROC LoadIdentity;
PFNORTHOPROC Ortho;
PFNCOLOR3DPROC Color3d;
//////////////////////////////////////////////
// Switch functions
// Extension: 1.1
static void CODEGEN_FUNCPTR Switch_CullFace(GLenum mode)
{
CullFace = (PFNCULLFACEPROC)IntGetProcAddress("glCullFace");
CullFace(mode);
}
static void CODEGEN_FUNCPTR Switch_FrontFace(GLenum mode)
{
FrontFace = (PFNFRONTFACEPROC)IntGetProcAddress("glFrontFace");
FrontFace(mode);
}
static void CODEGEN_FUNCPTR Switch_Hint(GLenum target, GLenum mode)
{
Hint = (PFNHINTPROC)IntGetProcAddress("glHint");
Hint(target, mode);
}
static void CODEGEN_FUNCPTR Switch_LineWidth(GLfloat width)
{
LineWidth = (PFNLINEWIDTHPROC)IntGetProcAddress("glLineWidth");
LineWidth(width);
}
static void CODEGEN_FUNCPTR Switch_PointSize(GLfloat size)
{
PointSize = (PFNPOINTSIZEPROC)IntGetProcAddress("glPointSize");
PointSize(size);
}
static void CODEGEN_FUNCPTR Switch_PolygonMode(GLenum face, GLenum mode)
{
PolygonMode = (PFNPOLYGONMODEPROC)IntGetProcAddress("glPolygonMode");
PolygonMode(face, mode);
}
static void CODEGEN_FUNCPTR Switch_Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
{
Scissor = (PFNSCISSORPROC)IntGetProcAddress("glScissor");
Scissor(x, y, width, height);
}
static void CODEGEN_FUNCPTR Switch_TexParameterf(GLenum target, GLenum pname, GLfloat param)
{
TexParameterf = (PFNTEXPARAMETERFPROC)IntGetProcAddress("glTexParameterf");
TexParameterf(target, pname, param);
}
static void CODEGEN_FUNCPTR Switch_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params)
{
TexParameterfv = (PFNTEXPARAMETERFVPROC)IntGetProcAddress("glTexParameterfv");
TexParameterfv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_TexParameteri(GLenum target, GLenum pname, GLint param)
{
TexParameteri = (PFNTEXPARAMETERIPROC)IntGetProcAddress("glTexParameteri");
TexParameteri(target, pname, param);
}
static void CODEGEN_FUNCPTR Switch_TexParameteriv(GLenum target, GLenum pname, const GLint *params)
{
TexParameteriv = (PFNTEXPARAMETERIVPROC)IntGetProcAddress("glTexParameteriv");
TexParameteriv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_TexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
TexImage1D = (PFNTEXIMAGE1DPROC)IntGetProcAddress("glTexImage1D");
TexImage1D(target, level, internalformat, width, border, format, type, pixels);
}
static void CODEGEN_FUNCPTR Switch_TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
TexImage2D = (PFNTEXIMAGE2DPROC)IntGetProcAddress("glTexImage2D");
TexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
}
static void CODEGEN_FUNCPTR Switch_DrawBuffer(GLenum mode)
{
DrawBuffer = (PFNDRAWBUFFERPROC)IntGetProcAddress("glDrawBuffer");
DrawBuffer(mode);
}
static void CODEGEN_FUNCPTR Switch_Clear(GLbitfield mask)
{
Clear = (PFNCLEARPROC)IntGetProcAddress("glClear");
Clear(mask);
}
static void CODEGEN_FUNCPTR Switch_ClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
ClearColor = (PFNCLEARCOLORPROC)IntGetProcAddress("glClearColor");
ClearColor(red, green, blue, alpha);
}
static void CODEGEN_FUNCPTR Switch_ClearStencil(GLint s)
{
ClearStencil = (PFNCLEARSTENCILPROC)IntGetProcAddress("glClearStencil");
ClearStencil(s);
}
static void CODEGEN_FUNCPTR Switch_ClearDepth(GLdouble depth)
{
ClearDepth = (PFNCLEARDEPTHPROC)IntGetProcAddress("glClearDepth");
ClearDepth(depth);
}
static void CODEGEN_FUNCPTR Switch_StencilMask(GLuint mask)
{
StencilMask = (PFNSTENCILMASKPROC)IntGetProcAddress("glStencilMask");
StencilMask(mask);
}
static void CODEGEN_FUNCPTR Switch_ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
ColorMask = (PFNCOLORMASKPROC)IntGetProcAddress("glColorMask");
ColorMask(red, green, blue, alpha);
}
static void CODEGEN_FUNCPTR Switch_DepthMask(GLboolean flag)
{
DepthMask = (PFNDEPTHMASKPROC)IntGetProcAddress("glDepthMask");
DepthMask(flag);
}
static void CODEGEN_FUNCPTR Switch_Disable(GLenum cap)
{
Disable = (PFNDISABLEPROC)IntGetProcAddress("glDisable");
Disable(cap);
}
static void CODEGEN_FUNCPTR Switch_Enable(GLenum cap)
{
Enable = (PFNENABLEPROC)IntGetProcAddress("glEnable");
Enable(cap);
}
static void CODEGEN_FUNCPTR Switch_Finish()
{
Finish = (PFNFINISHPROC)IntGetProcAddress("glFinish");
Finish();
}
static void CODEGEN_FUNCPTR Switch_Flush()
{
Flush = (PFNFLUSHPROC)IntGetProcAddress("glFlush");
Flush();
}
static void CODEGEN_FUNCPTR Switch_BlendFunc(GLenum sfactor, GLenum dfactor)
{
BlendFunc = (PFNBLENDFUNCPROC)IntGetProcAddress("glBlendFunc");
BlendFunc(sfactor, dfactor);
}
static void CODEGEN_FUNCPTR Switch_LogicOp(GLenum opcode)
{
LogicOp = (PFNLOGICOPPROC)IntGetProcAddress("glLogicOp");
LogicOp(opcode);
}
static void CODEGEN_FUNCPTR Switch_StencilFunc(GLenum func, GLint ref, GLuint mask)
{
StencilFunc = (PFNSTENCILFUNCPROC)IntGetProcAddress("glStencilFunc");
StencilFunc(func, ref, mask);
}
static void CODEGEN_FUNCPTR Switch_StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
{
StencilOp = (PFNSTENCILOPPROC)IntGetProcAddress("glStencilOp");
StencilOp(fail, zfail, zpass);
}
static void CODEGEN_FUNCPTR Switch_DepthFunc(GLenum func)
{
DepthFunc = (PFNDEPTHFUNCPROC)IntGetProcAddress("glDepthFunc");
DepthFunc(func);
}
static void CODEGEN_FUNCPTR Switch_PixelStoref(GLenum pname, GLfloat param)
{
PixelStoref = (PFNPIXELSTOREFPROC)IntGetProcAddress("glPixelStoref");
PixelStoref(pname, param);
}
static void CODEGEN_FUNCPTR Switch_PixelStorei(GLenum pname, GLint param)
{
PixelStorei = (PFNPIXELSTOREIPROC)IntGetProcAddress("glPixelStorei");
PixelStorei(pname, param);
}
static void CODEGEN_FUNCPTR Switch_ReadBuffer(GLenum mode)
{
ReadBuffer = (PFNREADBUFFERPROC)IntGetProcAddress("glReadBuffer");
ReadBuffer(mode);
}
static void CODEGEN_FUNCPTR Switch_ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
{
ReadPixels = (PFNREADPIXELSPROC)IntGetProcAddress("glReadPixels");
ReadPixels(x, y, width, height, format, type, pixels);
}
static void CODEGEN_FUNCPTR Switch_GetBooleanv(GLenum pname, GLboolean *params)
{
GetBooleanv = (PFNGETBOOLEANVPROC)IntGetProcAddress("glGetBooleanv");
GetBooleanv(pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetDoublev(GLenum pname, GLdouble *params)
{
GetDoublev = (PFNGETDOUBLEVPROC)IntGetProcAddress("glGetDoublev");
GetDoublev(pname, params);
}
static GLenum CODEGEN_FUNCPTR Switch_GetError()
{
GetError = (PFNGETERRORPROC)IntGetProcAddress("glGetError");
return GetError();
}
static void CODEGEN_FUNCPTR Switch_GetFloatv(GLenum pname, GLfloat *params)
{
GetFloatv = (PFNGETFLOATVPROC)IntGetProcAddress("glGetFloatv");
GetFloatv(pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetIntegerv(GLenum pname, GLint *params)
{
GetIntegerv = (PFNGETINTEGERVPROC)IntGetProcAddress("glGetIntegerv");
GetIntegerv(pname, params);
}
static const GLubyte * CODEGEN_FUNCPTR Switch_GetString(GLenum name)
{
GetString = (PFNGETSTRINGPROC)IntGetProcAddress("glGetString");
return GetString(name);
}
static void CODEGEN_FUNCPTR Switch_GetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels)
{
GetTexImage = (PFNGETTEXIMAGEPROC)IntGetProcAddress("glGetTexImage");
GetTexImage(target, level, format, type, pixels);
}
static void CODEGEN_FUNCPTR Switch_GetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)
{
GetTexParameterfv = (PFNGETTEXPARAMETERFVPROC)IntGetProcAddress("glGetTexParameterfv");
GetTexParameterfv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetTexParameteriv(GLenum target, GLenum pname, GLint *params)
{
GetTexParameteriv = (PFNGETTEXPARAMETERIVPROC)IntGetProcAddress("glGetTexParameteriv");
GetTexParameteriv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)
{
GetTexLevelParameterfv = (PFNGETTEXLEVELPARAMETERFVPROC)IntGetProcAddress("glGetTexLevelParameterfv");
GetTexLevelParameterfv(target, level, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)
{
GetTexLevelParameteriv = (PFNGETTEXLEVELPARAMETERIVPROC)IntGetProcAddress("glGetTexLevelParameteriv");
GetTexLevelParameteriv(target, level, pname, params);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsEnabled(GLenum cap)
{
IsEnabled = (PFNISENABLEDPROC)IntGetProcAddress("glIsEnabled");
return IsEnabled(cap);
}
static void CODEGEN_FUNCPTR Switch_DepthRange(GLdouble ren_near, GLdouble ren_far)
{
DepthRange = (PFNDEPTHRANGEPROC)IntGetProcAddress("glDepthRange");
DepthRange(ren_near, ren_far);
}
static void CODEGEN_FUNCPTR Switch_Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
Viewport = (PFNVIEWPORTPROC)IntGetProcAddress("glViewport");
Viewport(x, y, width, height);
}
static void CODEGEN_FUNCPTR Switch_DrawArrays(GLenum mode, GLint first, GLsizei count)
{
DrawArrays = (PFNDRAWARRAYSPROC)IntGetProcAddress("glDrawArrays");
DrawArrays(mode, first, count);
}
static void CODEGEN_FUNCPTR Switch_DrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)
{
DrawElements = (PFNDRAWELEMENTSPROC)IntGetProcAddress("glDrawElements");
DrawElements(mode, count, type, indices);
}
static void CODEGEN_FUNCPTR Switch_GetPointerv(GLenum pname, GLvoid* *params)
{
GetPointerv = (PFNGETPOINTERVPROC)IntGetProcAddress("glGetPointerv");
GetPointerv(pname, params);
}
static void CODEGEN_FUNCPTR Switch_PolygonOffset(GLfloat factor, GLfloat units)
{
PolygonOffset = (PFNPOLYGONOFFSETPROC)IntGetProcAddress("glPolygonOffset");
PolygonOffset(factor, units);
}
static void CODEGEN_FUNCPTR Switch_CopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
CopyTexImage1D = (PFNCOPYTEXIMAGE1DPROC)IntGetProcAddress("glCopyTexImage1D");
CopyTexImage1D(target, level, internalformat, x, y, width, border);
}
static void CODEGEN_FUNCPTR Switch_CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
CopyTexImage2D = (PFNCOPYTEXIMAGE2DPROC)IntGetProcAddress("glCopyTexImage2D");
CopyTexImage2D(target, level, internalformat, x, y, width, height, border);
}
static void CODEGEN_FUNCPTR Switch_CopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
CopyTexSubImage1D = (PFNCOPYTEXSUBIMAGE1DPROC)IntGetProcAddress("glCopyTexSubImage1D");
CopyTexSubImage1D(target, level, xoffset, x, y, width);
}
static void CODEGEN_FUNCPTR Switch_CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
CopyTexSubImage2D = (PFNCOPYTEXSUBIMAGE2DPROC)IntGetProcAddress("glCopyTexSubImage2D");
CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
}
static void CODEGEN_FUNCPTR Switch_TexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)
{
TexSubImage1D = (PFNTEXSUBIMAGE1DPROC)IntGetProcAddress("glTexSubImage1D");
TexSubImage1D(target, level, xoffset, width, format, type, pixels);
}
static void CODEGEN_FUNCPTR Switch_TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
{
TexSubImage2D = (PFNTEXSUBIMAGE2DPROC)IntGetProcAddress("glTexSubImage2D");
TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
}
static void CODEGEN_FUNCPTR Switch_BindTexture(GLenum target, GLuint texture)
{
BindTexture = (PFNBINDTEXTUREPROC)IntGetProcAddress("glBindTexture");
BindTexture(target, texture);
}
static void CODEGEN_FUNCPTR Switch_DeleteTextures(GLsizei n, const GLuint *textures)
{
DeleteTextures = (PFNDELETETEXTURESPROC)IntGetProcAddress("glDeleteTextures");
DeleteTextures(n, textures);
}
static void CODEGEN_FUNCPTR Switch_GenTextures(GLsizei n, GLuint *textures)
{
GenTextures = (PFNGENTEXTURESPROC)IntGetProcAddress("glGenTextures");
GenTextures(n, textures);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsTexture(GLuint texture)
{
IsTexture = (PFNISTEXTUREPROC)IntGetProcAddress("glIsTexture");
return IsTexture(texture);
}
static void CODEGEN_FUNCPTR Switch_Indexub(GLubyte c)
{
Indexub = (PFNINDEXUBPROC)IntGetProcAddress("glIndexub");
Indexub(c);
}
static void CODEGEN_FUNCPTR Switch_Indexubv(const GLubyte *c)
{
Indexubv = (PFNINDEXUBVPROC)IntGetProcAddress("glIndexubv");
Indexubv(c);
}
// Extension: 1.2
static void CODEGEN_FUNCPTR Switch_BlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
BlendColor = (PFNBLENDCOLORPROC)IntGetProcAddress("glBlendColor");
BlendColor(red, green, blue, alpha);
}
static void CODEGEN_FUNCPTR Switch_BlendEquation(GLenum mode)
{
BlendEquation = (PFNBLENDEQUATIONPROC)IntGetProcAddress("glBlendEquation");
BlendEquation(mode);
}
static void CODEGEN_FUNCPTR Switch_DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices)
{
DrawRangeElements = (PFNDRAWRANGEELEMENTSPROC)IntGetProcAddress("glDrawRangeElements");
DrawRangeElements(mode, start, end, count, type, indices);
}
static void CODEGEN_FUNCPTR Switch_TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)
{
TexSubImage3D = (PFNTEXSUBIMAGE3DPROC)IntGetProcAddress("glTexSubImage3D");
TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
}
static void CODEGEN_FUNCPTR Switch_CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
CopyTexSubImage3D = (PFNCOPYTEXSUBIMAGE3DPROC)IntGetProcAddress("glCopyTexSubImage3D");
CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
}
// Extension: 1.3
static void CODEGEN_FUNCPTR Switch_ActiveTexture(GLenum texture)
{
ActiveTexture = (PFNACTIVETEXTUREPROC)IntGetProcAddress("glActiveTexture");
ActiveTexture(texture);
}
static void CODEGEN_FUNCPTR Switch_SampleCoverage(GLfloat value, GLboolean invert)
{
SampleCoverage = (PFNSAMPLECOVERAGEPROC)IntGetProcAddress("glSampleCoverage");
SampleCoverage(value, invert);
}
static void CODEGEN_FUNCPTR Switch_CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)
{
CompressedTexImage3D = (PFNCOMPRESSEDTEXIMAGE3DPROC)IntGetProcAddress("glCompressedTexImage3D");
CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
}
static void CODEGEN_FUNCPTR Switch_CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
{
CompressedTexImage2D = (PFNCOMPRESSEDTEXIMAGE2DPROC)IntGetProcAddress("glCompressedTexImage2D");
CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
}
static void CODEGEN_FUNCPTR Switch_CompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data)
{
CompressedTexImage1D = (PFNCOMPRESSEDTEXIMAGE1DPROC)IntGetProcAddress("glCompressedTexImage1D");
CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data);
}
static void CODEGEN_FUNCPTR Switch_CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)
{
CompressedTexSubImage3D = (PFNCOMPRESSEDTEXSUBIMAGE3DPROC)IntGetProcAddress("glCompressedTexSubImage3D");
CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
}
static void CODEGEN_FUNCPTR Switch_CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
{
CompressedTexSubImage2D = (PFNCOMPRESSEDTEXSUBIMAGE2DPROC)IntGetProcAddress("glCompressedTexSubImage2D");
CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
}
static void CODEGEN_FUNCPTR Switch_CompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data)
{
CompressedTexSubImage1D = (PFNCOMPRESSEDTEXSUBIMAGE1DPROC)IntGetProcAddress("glCompressedTexSubImage1D");
CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data);
}
static void CODEGEN_FUNCPTR Switch_GetCompressedTexImage(GLenum target, GLint level, GLvoid *img)
{
GetCompressedTexImage = (PFNGETCOMPRESSEDTEXIMAGEPROC)IntGetProcAddress("glGetCompressedTexImage");
GetCompressedTexImage(target, level, img);
}
// Extension: 1.4
static void CODEGEN_FUNCPTR Switch_BlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
BlendFuncSeparate = (PFNBLENDFUNCSEPARATEPROC)IntGetProcAddress("glBlendFuncSeparate");
BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
}
static void CODEGEN_FUNCPTR Switch_MultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount)
{
MultiDrawArrays = (PFNMULTIDRAWARRAYSPROC)IntGetProcAddress("glMultiDrawArrays");
MultiDrawArrays(mode, first, count, drawcount);
}
static void CODEGEN_FUNCPTR Switch_MultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount)
{
MultiDrawElements = (PFNMULTIDRAWELEMENTSPROC)IntGetProcAddress("glMultiDrawElements");
MultiDrawElements(mode, count, type, indices, drawcount);
}
static void CODEGEN_FUNCPTR Switch_PointParameterf(GLenum pname, GLfloat param)
{
PointParameterf = (PFNPOINTPARAMETERFPROC)IntGetProcAddress("glPointParameterf");
PointParameterf(pname, param);
}
static void CODEGEN_FUNCPTR Switch_PointParameterfv(GLenum pname, const GLfloat *params)
{
PointParameterfv = (PFNPOINTPARAMETERFVPROC)IntGetProcAddress("glPointParameterfv");
PointParameterfv(pname, params);
}
static void CODEGEN_FUNCPTR Switch_PointParameteri(GLenum pname, GLint param)
{
PointParameteri = (PFNPOINTPARAMETERIPROC)IntGetProcAddress("glPointParameteri");
PointParameteri(pname, param);
}
static void CODEGEN_FUNCPTR Switch_PointParameteriv(GLenum pname, const GLint *params)
{
PointParameteriv = (PFNPOINTPARAMETERIVPROC)IntGetProcAddress("glPointParameteriv");
PointParameteriv(pname, params);
}
// Extension: 1.5
static void CODEGEN_FUNCPTR Switch_GenQueries(GLsizei n, GLuint *ids)
{
GenQueries = (PFNGENQUERIESPROC)IntGetProcAddress("glGenQueries");
GenQueries(n, ids);
}
static void CODEGEN_FUNCPTR Switch_DeleteQueries(GLsizei n, const GLuint *ids)
{
DeleteQueries = (PFNDELETEQUERIESPROC)IntGetProcAddress("glDeleteQueries");
DeleteQueries(n, ids);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsQuery(GLuint id)
{
IsQuery = (PFNISQUERYPROC)IntGetProcAddress("glIsQuery");
return IsQuery(id);
}
static void CODEGEN_FUNCPTR Switch_BeginQuery(GLenum target, GLuint id)
{
BeginQuery = (PFNBEGINQUERYPROC)IntGetProcAddress("glBeginQuery");
BeginQuery(target, id);
}
static void CODEGEN_FUNCPTR Switch_EndQuery(GLenum target)
{
EndQuery = (PFNENDQUERYPROC)IntGetProcAddress("glEndQuery");
EndQuery(target);
}
static void CODEGEN_FUNCPTR Switch_GetQueryiv(GLenum target, GLenum pname, GLint *params)
{
GetQueryiv = (PFNGETQUERYIVPROC)IntGetProcAddress("glGetQueryiv");
GetQueryiv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetQueryObjectiv(GLuint id, GLenum pname, GLint *params)
{
GetQueryObjectiv = (PFNGETQUERYOBJECTIVPROC)IntGetProcAddress("glGetQueryObjectiv");
GetQueryObjectiv(id, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
{
GetQueryObjectuiv = (PFNGETQUERYOBJECTUIVPROC)IntGetProcAddress("glGetQueryObjectuiv");
GetQueryObjectuiv(id, pname, params);
}
static void CODEGEN_FUNCPTR Switch_BindBuffer(GLenum target, GLuint buffer)
{
BindBuffer = (PFNBINDBUFFERPROC)IntGetProcAddress("glBindBuffer");
BindBuffer(target, buffer);
}
static void CODEGEN_FUNCPTR Switch_DeleteBuffers(GLsizei n, const GLuint *buffers)
{
DeleteBuffers = (PFNDELETEBUFFERSPROC)IntGetProcAddress("glDeleteBuffers");
DeleteBuffers(n, buffers);
}
static void CODEGEN_FUNCPTR Switch_GenBuffers(GLsizei n, GLuint *buffers)
{
GenBuffers = (PFNGENBUFFERSPROC)IntGetProcAddress("glGenBuffers");
GenBuffers(n, buffers);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsBuffer(GLuint buffer)
{
IsBuffer = (PFNISBUFFERPROC)IntGetProcAddress("glIsBuffer");
return IsBuffer(buffer);
}
static void CODEGEN_FUNCPTR Switch_BufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
{
BufferData = (PFNBUFFERDATAPROC)IntGetProcAddress("glBufferData");
BufferData(target, size, data, usage);
}
static void CODEGEN_FUNCPTR Switch_BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data)
{
BufferSubData = (PFNBUFFERSUBDATAPROC)IntGetProcAddress("glBufferSubData");
BufferSubData(target, offset, size, data);
}
static void CODEGEN_FUNCPTR Switch_GetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data)
{
GetBufferSubData = (PFNGETBUFFERSUBDATAPROC)IntGetProcAddress("glGetBufferSubData");
GetBufferSubData(target, offset, size, data);
}
static GLvoid* CODEGEN_FUNCPTR Switch_MapBuffer(GLenum target, GLenum access)
{
MapBuffer = (PFNMAPBUFFERPROC)IntGetProcAddress("glMapBuffer");
return MapBuffer(target, access);
}
static GLboolean CODEGEN_FUNCPTR Switch_UnmapBuffer(GLenum target)
{
UnmapBuffer = (PFNUNMAPBUFFERPROC)IntGetProcAddress("glUnmapBuffer");
return UnmapBuffer(target);
}
static void CODEGEN_FUNCPTR Switch_GetBufferParameteriv(GLenum target, GLenum pname, GLint *params)
{
GetBufferParameteriv = (PFNGETBUFFERPARAMETERIVPROC)IntGetProcAddress("glGetBufferParameteriv");
GetBufferParameteriv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetBufferPointerv(GLenum target, GLenum pname, GLvoid* *params)
{
GetBufferPointerv = (PFNGETBUFFERPOINTERVPROC)IntGetProcAddress("glGetBufferPointerv");
GetBufferPointerv(target, pname, params);
}
// Extension: 2.0
static void CODEGEN_FUNCPTR Switch_BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
{
BlendEquationSeparate = (PFNBLENDEQUATIONSEPARATEPROC)IntGetProcAddress("glBlendEquationSeparate");
BlendEquationSeparate(modeRGB, modeAlpha);
}
static void CODEGEN_FUNCPTR Switch_DrawBuffers(GLsizei n, const GLenum *bufs)
{
DrawBuffers = (PFNDRAWBUFFERSPROC)IntGetProcAddress("glDrawBuffers");
DrawBuffers(n, bufs);
}
static void CODEGEN_FUNCPTR Switch_StencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
{
StencilOpSeparate = (PFNSTENCILOPSEPARATEPROC)IntGetProcAddress("glStencilOpSeparate");
StencilOpSeparate(face, sfail, dpfail, dppass);
}
static void CODEGEN_FUNCPTR Switch_StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
{
StencilFuncSeparate = (PFNSTENCILFUNCSEPARATEPROC)IntGetProcAddress("glStencilFuncSeparate");
StencilFuncSeparate(face, func, ref, mask);
}
static void CODEGEN_FUNCPTR Switch_StencilMaskSeparate(GLenum face, GLuint mask)
{
StencilMaskSeparate = (PFNSTENCILMASKSEPARATEPROC)IntGetProcAddress("glStencilMaskSeparate");
StencilMaskSeparate(face, mask);
}
static void CODEGEN_FUNCPTR Switch_AttachShader(GLuint program, GLuint shader)
{
AttachShader = (PFNATTACHSHADERPROC)IntGetProcAddress("glAttachShader");
AttachShader(program, shader);
}
static void CODEGEN_FUNCPTR Switch_BindAttribLocation(GLuint program, GLuint index, const GLchar *name)
{
BindAttribLocation = (PFNBINDATTRIBLOCATIONPROC)IntGetProcAddress("glBindAttribLocation");
BindAttribLocation(program, index, name);
}
static void CODEGEN_FUNCPTR Switch_CompileShader(GLuint shader)
{
CompileShader = (PFNCOMPILESHADERPROC)IntGetProcAddress("glCompileShader");
CompileShader(shader);
}
static GLuint CODEGEN_FUNCPTR Switch_CreateProgram()
{
CreateProgram = (PFNCREATEPROGRAMPROC)IntGetProcAddress("glCreateProgram");
return CreateProgram();
}
static GLuint CODEGEN_FUNCPTR Switch_CreateShader(GLenum type)
{
CreateShader = (PFNCREATESHADERPROC)IntGetProcAddress("glCreateShader");
return CreateShader(type);
}
static void CODEGEN_FUNCPTR Switch_DeleteProgram(GLuint program)
{
DeleteProgram = (PFNDELETEPROGRAMPROC)IntGetProcAddress("glDeleteProgram");
DeleteProgram(program);
}
static void CODEGEN_FUNCPTR Switch_DeleteShader(GLuint shader)
{
DeleteShader = (PFNDELETESHADERPROC)IntGetProcAddress("glDeleteShader");
DeleteShader(shader);
}
static void CODEGEN_FUNCPTR Switch_DetachShader(GLuint program, GLuint shader)
{
DetachShader = (PFNDETACHSHADERPROC)IntGetProcAddress("glDetachShader");
DetachShader(program, shader);
}
static void CODEGEN_FUNCPTR Switch_DisableVertexAttribArray(GLuint index)
{
DisableVertexAttribArray = (PFNDISABLEVERTEXATTRIBARRAYPROC)IntGetProcAddress("glDisableVertexAttribArray");
DisableVertexAttribArray(index);
}
static void CODEGEN_FUNCPTR Switch_EnableVertexAttribArray(GLuint index)
{
EnableVertexAttribArray = (PFNENABLEVERTEXATTRIBARRAYPROC)IntGetProcAddress("glEnableVertexAttribArray");
EnableVertexAttribArray(index);
}
static void CODEGEN_FUNCPTR Switch_GetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
{
GetActiveAttrib = (PFNGETACTIVEATTRIBPROC)IntGetProcAddress("glGetActiveAttrib");
GetActiveAttrib(program, index, bufSize, length, size, type, name);
}
static void CODEGEN_FUNCPTR Switch_GetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
{
GetActiveUniform = (PFNGETACTIVEUNIFORMPROC)IntGetProcAddress("glGetActiveUniform");
GetActiveUniform(program, index, bufSize, length, size, type, name);
}
static void CODEGEN_FUNCPTR Switch_GetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj)
{
GetAttachedShaders = (PFNGETATTACHEDSHADERSPROC)IntGetProcAddress("glGetAttachedShaders");
GetAttachedShaders(program, maxCount, count, obj);
}
static GLint CODEGEN_FUNCPTR Switch_GetAttribLocation(GLuint program, const GLchar *name)
{
GetAttribLocation = (PFNGETATTRIBLOCATIONPROC)IntGetProcAddress("glGetAttribLocation");
return GetAttribLocation(program, name);
}
static void CODEGEN_FUNCPTR Switch_GetProgramiv(GLuint program, GLenum pname, GLint *params)
{
GetProgramiv = (PFNGETPROGRAMIVPROC)IntGetProcAddress("glGetProgramiv");
GetProgramiv(program, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
GetProgramInfoLog = (PFNGETPROGRAMINFOLOGPROC)IntGetProcAddress("glGetProgramInfoLog");
GetProgramInfoLog(program, bufSize, length, infoLog);
}
static void CODEGEN_FUNCPTR Switch_GetShaderiv(GLuint shader, GLenum pname, GLint *params)
{
GetShaderiv = (PFNGETSHADERIVPROC)IntGetProcAddress("glGetShaderiv");
GetShaderiv(shader, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
GetShaderInfoLog = (PFNGETSHADERINFOLOGPROC)IntGetProcAddress("glGetShaderInfoLog");
GetShaderInfoLog(shader, bufSize, length, infoLog);
}
static void CODEGEN_FUNCPTR Switch_GetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)
{
GetShaderSource = (PFNGETSHADERSOURCEPROC)IntGetProcAddress("glGetShaderSource");
GetShaderSource(shader, bufSize, length, source);
}
static GLint CODEGEN_FUNCPTR Switch_GetUniformLocation(GLuint program, const GLchar *name)
{
GetUniformLocation = (PFNGETUNIFORMLOCATIONPROC)IntGetProcAddress("glGetUniformLocation");
return GetUniformLocation(program, name);
}
static void CODEGEN_FUNCPTR Switch_GetUniformfv(GLuint program, GLint location, GLfloat *params)
{
GetUniformfv = (PFNGETUNIFORMFVPROC)IntGetProcAddress("glGetUniformfv");
GetUniformfv(program, location, params);
}
static void CODEGEN_FUNCPTR Switch_GetUniformiv(GLuint program, GLint location, GLint *params)
{
GetUniformiv = (PFNGETUNIFORMIVPROC)IntGetProcAddress("glGetUniformiv");
GetUniformiv(program, location, params);
}
static void CODEGEN_FUNCPTR Switch_GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params)
{
GetVertexAttribdv = (PFNGETVERTEXATTRIBDVPROC)IntGetProcAddress("glGetVertexAttribdv");
GetVertexAttribdv(index, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params)
{
GetVertexAttribfv = (PFNGETVERTEXATTRIBFVPROC)IntGetProcAddress("glGetVertexAttribfv");
GetVertexAttribfv(index, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetVertexAttribiv(GLuint index, GLenum pname, GLint *params)
{
GetVertexAttribiv = (PFNGETVERTEXATTRIBIVPROC)IntGetProcAddress("glGetVertexAttribiv");
GetVertexAttribiv(index, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* *pointer)
{
GetVertexAttribPointerv = (PFNGETVERTEXATTRIBPOINTERVPROC)IntGetProcAddress("glGetVertexAttribPointerv");
GetVertexAttribPointerv(index, pname, pointer);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsProgram(GLuint program)
{
IsProgram = (PFNISPROGRAMPROC)IntGetProcAddress("glIsProgram");
return IsProgram(program);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsShader(GLuint shader)
{
IsShader = (PFNISSHADERPROC)IntGetProcAddress("glIsShader");
return IsShader(shader);
}
static void CODEGEN_FUNCPTR Switch_LinkProgram(GLuint program)
{
LinkProgram = (PFNLINKPROGRAMPROC)IntGetProcAddress("glLinkProgram");
LinkProgram(program);
}
static void CODEGEN_FUNCPTR Switch_ShaderSource(GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length)
{
ShaderSource = (PFNSHADERSOURCEPROC)IntGetProcAddress("glShaderSource");
ShaderSource(shader, count, string, length);
}
static void CODEGEN_FUNCPTR Switch_UseProgram(GLuint program)
{
UseProgram = (PFNUSEPROGRAMPROC)IntGetProcAddress("glUseProgram");
UseProgram(program);
}
static void CODEGEN_FUNCPTR Switch_Uniform1f(GLint location, GLfloat v0)
{
Uniform1f = (PFNUNIFORM1FPROC)IntGetProcAddress("glUniform1f");
Uniform1f(location, v0);
}
static void CODEGEN_FUNCPTR Switch_Uniform2f(GLint location, GLfloat v0, GLfloat v1)
{
Uniform2f = (PFNUNIFORM2FPROC)IntGetProcAddress("glUniform2f");
Uniform2f(location, v0, v1);
}
static void CODEGEN_FUNCPTR Switch_Uniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
{
Uniform3f = (PFNUNIFORM3FPROC)IntGetProcAddress("glUniform3f");
Uniform3f(location, v0, v1, v2);
}
static void CODEGEN_FUNCPTR Switch_Uniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
Uniform4f = (PFNUNIFORM4FPROC)IntGetProcAddress("glUniform4f");
Uniform4f(location, v0, v1, v2, v3);
}
static void CODEGEN_FUNCPTR Switch_Uniform1i(GLint location, GLint v0)
{
Uniform1i = (PFNUNIFORM1IPROC)IntGetProcAddress("glUniform1i");
Uniform1i(location, v0);
}
static void CODEGEN_FUNCPTR Switch_Uniform2i(GLint location, GLint v0, GLint v1)
{
Uniform2i = (PFNUNIFORM2IPROC)IntGetProcAddress("glUniform2i");
Uniform2i(location, v0, v1);
}
static void CODEGEN_FUNCPTR Switch_Uniform3i(GLint location, GLint v0, GLint v1, GLint v2)
{
Uniform3i = (PFNUNIFORM3IPROC)IntGetProcAddress("glUniform3i");
Uniform3i(location, v0, v1, v2);
}
static void CODEGEN_FUNCPTR Switch_Uniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
{
Uniform4i = (PFNUNIFORM4IPROC)IntGetProcAddress("glUniform4i");
Uniform4i(location, v0, v1, v2, v3);
}
static void CODEGEN_FUNCPTR Switch_Uniform1fv(GLint location, GLsizei count, const GLfloat *value)
{
Uniform1fv = (PFNUNIFORM1FVPROC)IntGetProcAddress("glUniform1fv");
Uniform1fv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform2fv(GLint location, GLsizei count, const GLfloat *value)
{
Uniform2fv = (PFNUNIFORM2FVPROC)IntGetProcAddress("glUniform2fv");
Uniform2fv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform3fv(GLint location, GLsizei count, const GLfloat *value)
{
Uniform3fv = (PFNUNIFORM3FVPROC)IntGetProcAddress("glUniform3fv");
Uniform3fv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform4fv(GLint location, GLsizei count, const GLfloat *value)
{
Uniform4fv = (PFNUNIFORM4FVPROC)IntGetProcAddress("glUniform4fv");
Uniform4fv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform1iv(GLint location, GLsizei count, const GLint *value)
{
Uniform1iv = (PFNUNIFORM1IVPROC)IntGetProcAddress("glUniform1iv");
Uniform1iv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform2iv(GLint location, GLsizei count, const GLint *value)
{
Uniform2iv = (PFNUNIFORM2IVPROC)IntGetProcAddress("glUniform2iv");
Uniform2iv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform3iv(GLint location, GLsizei count, const GLint *value)
{
Uniform3iv = (PFNUNIFORM3IVPROC)IntGetProcAddress("glUniform3iv");
Uniform3iv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform4iv(GLint location, GLsizei count, const GLint *value)
{
Uniform4iv = (PFNUNIFORM4IVPROC)IntGetProcAddress("glUniform4iv");
Uniform4iv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix2fv = (PFNUNIFORMMATRIX2FVPROC)IntGetProcAddress("glUniformMatrix2fv");
UniformMatrix2fv(location, count, transpose, value);
}
static void CODEGEN_FUNCPTR Switch_UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix3fv = (PFNUNIFORMMATRIX3FVPROC)IntGetProcAddress("glUniformMatrix3fv");
UniformMatrix3fv(location, count, transpose, value);
}
static void CODEGEN_FUNCPTR Switch_UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix4fv = (PFNUNIFORMMATRIX4FVPROC)IntGetProcAddress("glUniformMatrix4fv");
UniformMatrix4fv(location, count, transpose, value);
}
static void CODEGEN_FUNCPTR Switch_ValidateProgram(GLuint program)
{
ValidateProgram = (PFNVALIDATEPROGRAMPROC)IntGetProcAddress("glValidateProgram");
ValidateProgram(program);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
{
VertexAttribPointer = (PFNVERTEXATTRIBPOINTERPROC)IntGetProcAddress("glVertexAttribPointer");
VertexAttribPointer(index, size, type, normalized, stride, pointer);
}
// Extension: 2.1
static void CODEGEN_FUNCPTR Switch_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix2x3fv = (PFNUNIFORMMATRIX2X3FVPROC)IntGetProcAddress("glUniformMatrix2x3fv");
UniformMatrix2x3fv(location, count, transpose, value);
}
static void CODEGEN_FUNCPTR Switch_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix3x2fv = (PFNUNIFORMMATRIX3X2FVPROC)IntGetProcAddress("glUniformMatrix3x2fv");
UniformMatrix3x2fv(location, count, transpose, value);
}
static void CODEGEN_FUNCPTR Switch_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix2x4fv = (PFNUNIFORMMATRIX2X4FVPROC)IntGetProcAddress("glUniformMatrix2x4fv");
UniformMatrix2x4fv(location, count, transpose, value);
}
static void CODEGEN_FUNCPTR Switch_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix4x2fv = (PFNUNIFORMMATRIX4X2FVPROC)IntGetProcAddress("glUniformMatrix4x2fv");
UniformMatrix4x2fv(location, count, transpose, value);
}
static void CODEGEN_FUNCPTR Switch_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix3x4fv = (PFNUNIFORMMATRIX3X4FVPROC)IntGetProcAddress("glUniformMatrix3x4fv");
UniformMatrix3x4fv(location, count, transpose, value);
}
static void CODEGEN_FUNCPTR Switch_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
UniformMatrix4x3fv = (PFNUNIFORMMATRIX4X3FVPROC)IntGetProcAddress("glUniformMatrix4x3fv");
UniformMatrix4x3fv(location, count, transpose, value);
}
// Extension: ARB_vertex_array_object
static void CODEGEN_FUNCPTR Switch_BindVertexArray(GLuint ren_array)
{
BindVertexArray = (PFNBINDVERTEXARRAYPROC)IntGetProcAddress("glBindVertexArray");
BindVertexArray(ren_array);
}
static void CODEGEN_FUNCPTR Switch_DeleteVertexArrays(GLsizei n, const GLuint *arrays)
{
DeleteVertexArrays = (PFNDELETEVERTEXARRAYSPROC)IntGetProcAddress("glDeleteVertexArrays");
DeleteVertexArrays(n, arrays);
}
static void CODEGEN_FUNCPTR Switch_GenVertexArrays(GLsizei n, GLuint *arrays)
{
GenVertexArrays = (PFNGENVERTEXARRAYSPROC)IntGetProcAddress("glGenVertexArrays");
GenVertexArrays(n, arrays);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsVertexArray(GLuint ren_array)
{
IsVertexArray = (PFNISVERTEXARRAYPROC)IntGetProcAddress("glIsVertexArray");
return IsVertexArray(ren_array);
}
// Extension: ARB_map_buffer_range
static GLvoid* CODEGEN_FUNCPTR Switch_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
{
MapBufferRange = (PFNMAPBUFFERRANGEPROC)IntGetProcAddress("glMapBufferRange");
return MapBufferRange(target, offset, length, access);
}
static void CODEGEN_FUNCPTR Switch_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
{
FlushMappedBufferRange = (PFNFLUSHMAPPEDBUFFERRANGEPROC)IntGetProcAddress("glFlushMappedBufferRange");
FlushMappedBufferRange(target, offset, length);
}
// Extension: ARB_framebuffer_object
static GLboolean CODEGEN_FUNCPTR Switch_IsRenderbuffer(GLuint renderbuffer)
{
IsRenderbuffer = (PFNISRENDERBUFFERPROC)IntGetProcAddress("glIsRenderbuffer");
return IsRenderbuffer(renderbuffer);
}
static void CODEGEN_FUNCPTR Switch_BindRenderbuffer(GLenum target, GLuint renderbuffer)
{
BindRenderbuffer = (PFNBINDRENDERBUFFERPROC)IntGetProcAddress("glBindRenderbuffer");
BindRenderbuffer(target, renderbuffer);
}
static void CODEGEN_FUNCPTR Switch_DeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers)
{
DeleteRenderbuffers = (PFNDELETERENDERBUFFERSPROC)IntGetProcAddress("glDeleteRenderbuffers");
DeleteRenderbuffers(n, renderbuffers);
}
static void CODEGEN_FUNCPTR Switch_GenRenderbuffers(GLsizei n, GLuint *renderbuffers)
{
GenRenderbuffers = (PFNGENRENDERBUFFERSPROC)IntGetProcAddress("glGenRenderbuffers");
GenRenderbuffers(n, renderbuffers);
}
static void CODEGEN_FUNCPTR Switch_RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
RenderbufferStorage = (PFNRENDERBUFFERSTORAGEPROC)IntGetProcAddress("glRenderbufferStorage");
RenderbufferStorage(target, internalformat, width, height);
}
static void CODEGEN_FUNCPTR Switch_GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params)
{
GetRenderbufferParameteriv = (PFNGETRENDERBUFFERPARAMETERIVPROC)IntGetProcAddress("glGetRenderbufferParameteriv");
GetRenderbufferParameteriv(target, pname, params);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsFramebuffer(GLuint framebuffer)
{
IsFramebuffer = (PFNISFRAMEBUFFERPROC)IntGetProcAddress("glIsFramebuffer");
return IsFramebuffer(framebuffer);
}
static void CODEGEN_FUNCPTR Switch_BindFramebuffer(GLenum target, GLuint framebuffer)
{
BindFramebuffer = (PFNBINDFRAMEBUFFERPROC)IntGetProcAddress("glBindFramebuffer");
BindFramebuffer(target, framebuffer);
}
static void CODEGEN_FUNCPTR Switch_DeleteFramebuffers(GLsizei n, const GLuint *framebuffers)
{
DeleteFramebuffers = (PFNDELETEFRAMEBUFFERSPROC)IntGetProcAddress("glDeleteFramebuffers");
DeleteFramebuffers(n, framebuffers);
}
static void CODEGEN_FUNCPTR Switch_GenFramebuffers(GLsizei n, GLuint *framebuffers)
{
GenFramebuffers = (PFNGENFRAMEBUFFERSPROC)IntGetProcAddress("glGenFramebuffers");
GenFramebuffers(n, framebuffers);
}
static GLenum CODEGEN_FUNCPTR Switch_CheckFramebufferStatus(GLenum target)
{
CheckFramebufferStatus = (PFNCHECKFRAMEBUFFERSTATUSPROC)IntGetProcAddress("glCheckFramebufferStatus");
return CheckFramebufferStatus(target);
}
static void CODEGEN_FUNCPTR Switch_FramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
FramebufferTexture1D = (PFNFRAMEBUFFERTEXTURE1DPROC)IntGetProcAddress("glFramebufferTexture1D");
FramebufferTexture1D(target, attachment, textarget, texture, level);
}
static void CODEGEN_FUNCPTR Switch_FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
FramebufferTexture2D = (PFNFRAMEBUFFERTEXTURE2DPROC)IntGetProcAddress("glFramebufferTexture2D");
FramebufferTexture2D(target, attachment, textarget, texture, level);
}
static void CODEGEN_FUNCPTR Switch_FramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
{
FramebufferTexture3D = (PFNFRAMEBUFFERTEXTURE3DPROC)IntGetProcAddress("glFramebufferTexture3D");
FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset);
}
static void CODEGEN_FUNCPTR Switch_FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
FramebufferRenderbuffer = (PFNFRAMEBUFFERRENDERBUFFERPROC)IntGetProcAddress("glFramebufferRenderbuffer");
FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
}
static void CODEGEN_FUNCPTR Switch_GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params)
{
GetFramebufferAttachmentParameteriv = (PFNGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)IntGetProcAddress("glGetFramebufferAttachmentParameteriv");
GetFramebufferAttachmentParameteriv(target, attachment, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GenerateMipmap(GLenum target)
{
GenerateMipmap = (PFNGENERATEMIPMAPPROC)IntGetProcAddress("glGenerateMipmap");
GenerateMipmap(target);
}
static void CODEGEN_FUNCPTR Switch_BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
{
BlitFramebuffer = (PFNBLITFRAMEBUFFERPROC)IntGetProcAddress("glBlitFramebuffer");
BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
}
static void CODEGEN_FUNCPTR Switch_RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
RenderbufferStorageMultisample = (PFNRENDERBUFFERSTORAGEMULTISAMPLEPROC)IntGetProcAddress("glRenderbufferStorageMultisample");
RenderbufferStorageMultisample(target, samples, internalformat, width, height);
}
static void CODEGEN_FUNCPTR Switch_FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
FramebufferTextureLayer = (PFNFRAMEBUFFERTEXTURELAYERPROC)IntGetProcAddress("glFramebufferTextureLayer");
FramebufferTextureLayer(target, attachment, texture, level, layer);
}
// Extension: 3.0
static void CODEGEN_FUNCPTR Switch_ColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
ColorMaski = (PFNCOLORMASKIPROC)IntGetProcAddress("glColorMaski");
ColorMaski(index, r, g, b, a);
}
static void CODEGEN_FUNCPTR Switch_GetBooleani_v(GLenum target, GLuint index, GLboolean *data)
{
GetBooleani_v = (PFNGETBOOLEANI_VPROC)IntGetProcAddress("glGetBooleani_v");
GetBooleani_v(target, index, data);
}
static void CODEGEN_FUNCPTR Switch_GetIntegeri_v(GLenum target, GLuint index, GLint *data)
{
GetIntegeri_v = (PFNGETINTEGERI_VPROC)IntGetProcAddress("glGetIntegeri_v");
GetIntegeri_v(target, index, data);
}
static void CODEGEN_FUNCPTR Switch_Enablei(GLenum target, GLuint index)
{
Enablei = (PFNENABLEIPROC)IntGetProcAddress("glEnablei");
Enablei(target, index);
}
static void CODEGEN_FUNCPTR Switch_Disablei(GLenum target, GLuint index)
{
Disablei = (PFNDISABLEIPROC)IntGetProcAddress("glDisablei");
Disablei(target, index);
}
static GLboolean CODEGEN_FUNCPTR Switch_IsEnabledi(GLenum target, GLuint index)
{
IsEnabledi = (PFNISENABLEDIPROC)IntGetProcAddress("glIsEnabledi");
return IsEnabledi(target, index);
}
static void CODEGEN_FUNCPTR Switch_BeginTransformFeedback(GLenum primitiveMode)
{
BeginTransformFeedback = (PFNBEGINTRANSFORMFEEDBACKPROC)IntGetProcAddress("glBeginTransformFeedback");
BeginTransformFeedback(primitiveMode);
}
static void CODEGEN_FUNCPTR Switch_EndTransformFeedback()
{
EndTransformFeedback = (PFNENDTRANSFORMFEEDBACKPROC)IntGetProcAddress("glEndTransformFeedback");
EndTransformFeedback();
}
static void CODEGEN_FUNCPTR Switch_BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
BindBufferRange = (PFNBINDBUFFERRANGEPROC)IntGetProcAddress("glBindBufferRange");
BindBufferRange(target, index, buffer, offset, size);
}
static void CODEGEN_FUNCPTR Switch_BindBufferBase(GLenum target, GLuint index, GLuint buffer)
{
BindBufferBase = (PFNBINDBUFFERBASEPROC)IntGetProcAddress("glBindBufferBase");
BindBufferBase(target, index, buffer);
}
static void CODEGEN_FUNCPTR Switch_TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode)
{
TransformFeedbackVaryings = (PFNTRANSFORMFEEDBACKVARYINGSPROC)IntGetProcAddress("glTransformFeedbackVaryings");
TransformFeedbackVaryings(program, count, varyings, bufferMode);
}
static void CODEGEN_FUNCPTR Switch_GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
{
GetTransformFeedbackVarying = (PFNGETTRANSFORMFEEDBACKVARYINGPROC)IntGetProcAddress("glGetTransformFeedbackVarying");
GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
}
static void CODEGEN_FUNCPTR Switch_ClampColor(GLenum target, GLenum clamp)
{
ClampColor = (PFNCLAMPCOLORPROC)IntGetProcAddress("glClampColor");
ClampColor(target, clamp);
}
static void CODEGEN_FUNCPTR Switch_BeginConditionalRender(GLuint id, GLenum mode)
{
BeginConditionalRender = (PFNBEGINCONDITIONALRENDERPROC)IntGetProcAddress("glBeginConditionalRender");
BeginConditionalRender(id, mode);
}
static void CODEGEN_FUNCPTR Switch_EndConditionalRender()
{
EndConditionalRender = (PFNENDCONDITIONALRENDERPROC)IntGetProcAddress("glEndConditionalRender");
EndConditionalRender();
}
static void CODEGEN_FUNCPTR Switch_VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
VertexAttribIPointer = (PFNVERTEXATTRIBIPOINTERPROC)IntGetProcAddress("glVertexAttribIPointer");
VertexAttribIPointer(index, size, type, stride, pointer);
}
static void CODEGEN_FUNCPTR Switch_GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params)
{
GetVertexAttribIiv = (PFNGETVERTEXATTRIBIIVPROC)IntGetProcAddress("glGetVertexAttribIiv");
GetVertexAttribIiv(index, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params)
{
GetVertexAttribIuiv = (PFNGETVERTEXATTRIBIUIVPROC)IntGetProcAddress("glGetVertexAttribIuiv");
GetVertexAttribIuiv(index, pname, params);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI1i(GLuint index, GLint x)
{
VertexAttribI1i = (PFNVERTEXATTRIBI1IPROC)IntGetProcAddress("glVertexAttribI1i");
VertexAttribI1i(index, x);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI2i(GLuint index, GLint x, GLint y)
{
VertexAttribI2i = (PFNVERTEXATTRIBI2IPROC)IntGetProcAddress("glVertexAttribI2i");
VertexAttribI2i(index, x, y);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI3i(GLuint index, GLint x, GLint y, GLint z)
{
VertexAttribI3i = (PFNVERTEXATTRIBI3IPROC)IntGetProcAddress("glVertexAttribI3i");
VertexAttribI3i(index, x, y, z);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
{
VertexAttribI4i = (PFNVERTEXATTRIBI4IPROC)IntGetProcAddress("glVertexAttribI4i");
VertexAttribI4i(index, x, y, z, w);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI1ui(GLuint index, GLuint x)
{
VertexAttribI1ui = (PFNVERTEXATTRIBI1UIPROC)IntGetProcAddress("glVertexAttribI1ui");
VertexAttribI1ui(index, x);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI2ui(GLuint index, GLuint x, GLuint y)
{
VertexAttribI2ui = (PFNVERTEXATTRIBI2UIPROC)IntGetProcAddress("glVertexAttribI2ui");
VertexAttribI2ui(index, x, y);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z)
{
VertexAttribI3ui = (PFNVERTEXATTRIBI3UIPROC)IntGetProcAddress("glVertexAttribI3ui");
VertexAttribI3ui(index, x, y, z);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
{
VertexAttribI4ui = (PFNVERTEXATTRIBI4UIPROC)IntGetProcAddress("glVertexAttribI4ui");
VertexAttribI4ui(index, x, y, z, w);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI1iv(GLuint index, const GLint *v)
{
VertexAttribI1iv = (PFNVERTEXATTRIBI1IVPROC)IntGetProcAddress("glVertexAttribI1iv");
VertexAttribI1iv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI2iv(GLuint index, const GLint *v)
{
VertexAttribI2iv = (PFNVERTEXATTRIBI2IVPROC)IntGetProcAddress("glVertexAttribI2iv");
VertexAttribI2iv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI3iv(GLuint index, const GLint *v)
{
VertexAttribI3iv = (PFNVERTEXATTRIBI3IVPROC)IntGetProcAddress("glVertexAttribI3iv");
VertexAttribI3iv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI4iv(GLuint index, const GLint *v)
{
VertexAttribI4iv = (PFNVERTEXATTRIBI4IVPROC)IntGetProcAddress("glVertexAttribI4iv");
VertexAttribI4iv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI1uiv(GLuint index, const GLuint *v)
{
VertexAttribI1uiv = (PFNVERTEXATTRIBI1UIVPROC)IntGetProcAddress("glVertexAttribI1uiv");
VertexAttribI1uiv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI2uiv(GLuint index, const GLuint *v)
{
VertexAttribI2uiv = (PFNVERTEXATTRIBI2UIVPROC)IntGetProcAddress("glVertexAttribI2uiv");
VertexAttribI2uiv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI3uiv(GLuint index, const GLuint *v)
{
VertexAttribI3uiv = (PFNVERTEXATTRIBI3UIVPROC)IntGetProcAddress("glVertexAttribI3uiv");
VertexAttribI3uiv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI4uiv(GLuint index, const GLuint *v)
{
VertexAttribI4uiv = (PFNVERTEXATTRIBI4UIVPROC)IntGetProcAddress("glVertexAttribI4uiv");
VertexAttribI4uiv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI4bv(GLuint index, const GLbyte *v)
{
VertexAttribI4bv = (PFNVERTEXATTRIBI4BVPROC)IntGetProcAddress("glVertexAttribI4bv");
VertexAttribI4bv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI4sv(GLuint index, const GLshort *v)
{
VertexAttribI4sv = (PFNVERTEXATTRIBI4SVPROC)IntGetProcAddress("glVertexAttribI4sv");
VertexAttribI4sv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI4ubv(GLuint index, const GLubyte *v)
{
VertexAttribI4ubv = (PFNVERTEXATTRIBI4UBVPROC)IntGetProcAddress("glVertexAttribI4ubv");
VertexAttribI4ubv(index, v);
}
static void CODEGEN_FUNCPTR Switch_VertexAttribI4usv(GLuint index, const GLushort *v)
{
VertexAttribI4usv = (PFNVERTEXATTRIBI4USVPROC)IntGetProcAddress("glVertexAttribI4usv");
VertexAttribI4usv(index, v);
}
static void CODEGEN_FUNCPTR Switch_GetUniformuiv(GLuint program, GLint location, GLuint *params)
{
GetUniformuiv = (PFNGETUNIFORMUIVPROC)IntGetProcAddress("glGetUniformuiv");
GetUniformuiv(program, location, params);
}
static void CODEGEN_FUNCPTR Switch_BindFragDataLocation(GLuint program, GLuint color, const GLchar *name)
{
BindFragDataLocation = (PFNBINDFRAGDATALOCATIONPROC)IntGetProcAddress("glBindFragDataLocation");
BindFragDataLocation(program, color, name);
}
static GLint CODEGEN_FUNCPTR Switch_GetFragDataLocation(GLuint program, const GLchar *name)
{
GetFragDataLocation = (PFNGETFRAGDATALOCATIONPROC)IntGetProcAddress("glGetFragDataLocation");
return GetFragDataLocation(program, name);
}
static void CODEGEN_FUNCPTR Switch_Uniform1ui(GLint location, GLuint v0)
{
Uniform1ui = (PFNUNIFORM1UIPROC)IntGetProcAddress("glUniform1ui");
Uniform1ui(location, v0);
}
static void CODEGEN_FUNCPTR Switch_Uniform2ui(GLint location, GLuint v0, GLuint v1)
{
Uniform2ui = (PFNUNIFORM2UIPROC)IntGetProcAddress("glUniform2ui");
Uniform2ui(location, v0, v1);
}
static void CODEGEN_FUNCPTR Switch_Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
{
Uniform3ui = (PFNUNIFORM3UIPROC)IntGetProcAddress("glUniform3ui");
Uniform3ui(location, v0, v1, v2);
}
static void CODEGEN_FUNCPTR Switch_Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
{
Uniform4ui = (PFNUNIFORM4UIPROC)IntGetProcAddress("glUniform4ui");
Uniform4ui(location, v0, v1, v2, v3);
}
static void CODEGEN_FUNCPTR Switch_Uniform1uiv(GLint location, GLsizei count, const GLuint *value)
{
Uniform1uiv = (PFNUNIFORM1UIVPROC)IntGetProcAddress("glUniform1uiv");
Uniform1uiv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform2uiv(GLint location, GLsizei count, const GLuint *value)
{
Uniform2uiv = (PFNUNIFORM2UIVPROC)IntGetProcAddress("glUniform2uiv");
Uniform2uiv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform3uiv(GLint location, GLsizei count, const GLuint *value)
{
Uniform3uiv = (PFNUNIFORM3UIVPROC)IntGetProcAddress("glUniform3uiv");
Uniform3uiv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_Uniform4uiv(GLint location, GLsizei count, const GLuint *value)
{
Uniform4uiv = (PFNUNIFORM4UIVPROC)IntGetProcAddress("glUniform4uiv");
Uniform4uiv(location, count, value);
}
static void CODEGEN_FUNCPTR Switch_TexParameterIiv(GLenum target, GLenum pname, const GLint *params)
{
TexParameterIiv = (PFNTEXPARAMETERIIVPROC)IntGetProcAddress("glTexParameterIiv");
TexParameterIiv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params)
{
TexParameterIuiv = (PFNTEXPARAMETERIUIVPROC)IntGetProcAddress("glTexParameterIuiv");
TexParameterIuiv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params)
{
GetTexParameterIiv = (PFNGETTEXPARAMETERIIVPROC)IntGetProcAddress("glGetTexParameterIiv");
GetTexParameterIiv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params)
{
GetTexParameterIuiv = (PFNGETTEXPARAMETERIUIVPROC)IntGetProcAddress("glGetTexParameterIuiv");
GetTexParameterIuiv(target, pname, params);
}
static void CODEGEN_FUNCPTR Switch_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
{
ClearBufferiv = (PFNCLEARBUFFERIVPROC)IntGetProcAddress("glClearBufferiv");
ClearBufferiv(buffer, drawbuffer, value);
}
static void CODEGEN_FUNCPTR Switch_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
{
ClearBufferuiv = (PFNCLEARBUFFERUIVPROC)IntGetProcAddress("glClearBufferuiv");
ClearBufferuiv(buffer, drawbuffer, value);
}
static void CODEGEN_FUNCPTR Switch_ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
{
ClearBufferfv = (PFNCLEARBUFFERFVPROC)IntGetProcAddress("glClearBufferfv");
ClearBufferfv(buffer, drawbuffer, value);
}
static void CODEGEN_FUNCPTR Switch_ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
{
ClearBufferfi = (PFNCLEARBUFFERFIPROC)IntGetProcAddress("glClearBufferfi");
ClearBufferfi(buffer, drawbuffer, depth, stencil);
}
static const GLubyte * CODEGEN_FUNCPTR Switch_GetStringi(GLenum name, GLuint index)
{
GetStringi = (PFNGETSTRINGIPROC)IntGetProcAddress("glGetStringi");
return GetStringi(name, index);
}
// Extension: ARB_uniform_buffer_object
static void CODEGEN_FUNCPTR Switch_GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices)
{
GetUniformIndices = (PFNGETUNIFORMINDICESPROC)IntGetProcAddress("glGetUniformIndices");
GetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
}
static void CODEGEN_FUNCPTR Switch_GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
{
GetActiveUniformsiv = (PFNGETACTIVEUNIFORMSIVPROC)IntGetProcAddress("glGetActiveUniformsiv");
GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)
{
GetActiveUniformName = (PFNGETACTIVEUNIFORMNAMEPROC)IntGetProcAddress("glGetActiveUniformName");
GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName);
}
static GLuint CODEGEN_FUNCPTR Switch_GetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName)
{
GetUniformBlockIndex = (PFNGETUNIFORMBLOCKINDEXPROC)IntGetProcAddress("glGetUniformBlockIndex");
return GetUniformBlockIndex(program, uniformBlockName);
}
static void CODEGEN_FUNCPTR Switch_GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
{
GetActiveUniformBlockiv = (PFNGETACTIVEUNIFORMBLOCKIVPROC)IntGetProcAddress("glGetActiveUniformBlockiv");
GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
}
static void CODEGEN_FUNCPTR Switch_GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
{
GetActiveUniformBlockName = (PFNGETACTIVEUNIFORMBLOCKNAMEPROC)IntGetProcAddress("glGetActiveUniformBlockName");
GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
}
static void CODEGEN_FUNCPTR Switch_UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
{
UniformBlockBinding = (PFNUNIFORMBLOCKBINDINGPROC)IntGetProcAddress("glUniformBlockBinding");
UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
}
// Extension: ARB_copy_buffer
static void CODEGEN_FUNCPTR Switch_CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
{
CopyBufferSubData = (PFNCOPYBUFFERSUBDATAPROC)IntGetProcAddress("glCopyBufferSubData");
CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
}
// Extension: 3.1
static void CODEGEN_FUNCPTR Switch_DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
{
DrawArraysInstanced = (PFNDRAWARRAYSINSTANCEDPROC)IntGetProcAddress("glDrawArraysInstanced");
DrawArraysInstanced(mode, first, count, instancecount);
}
static void CODEGEN_FUNCPTR Switch_DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount)
{
DrawElementsInstanced = (PFNDRAWELEMENTSINSTANCEDPROC)IntGetProcAddress("glDrawElementsInstanced");
DrawElementsInstanced(mode, count, type, indices, instancecount);
}
static void CODEGEN_FUNCPTR Switch_TexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
{
TexBuffer = (PFNTEXBUFFERPROC)IntGetProcAddress("glTexBuffer");
TexBuffer(target, internalformat, buffer);
}
static void CODEGEN_FUNCPTR Switch_PrimitiveRestartIndex(GLuint index)
{
PrimitiveRestartIndex = (PFNPRIMITIVERESTARTINDEXPROC)IntGetProcAddress("glPrimitiveRestartIndex");
PrimitiveRestartIndex(index);
}
// Legacy
static void CODEGEN_FUNCPTR Switch_EnableClientState(GLenum cap)
{
EnableClientState = (PFNENABLECLIENTSTATEPROC)IntGetProcAddress("glEnableClientState");
EnableClientState(cap);
}
static void CODEGEN_FUNCPTR Switch_DisableClientState(GLenum cap)
{
DisableClientState = (PFNDISABLECLIENTSTATEPROC)IntGetProcAddress("glDisableClientState");
DisableClientState(cap);
}
static void CODEGEN_FUNCPTR Switch_VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr)
{
VertexPointer = (PFNVERTEXPOINTERPROC)IntGetProcAddress("glVertexPointer");
VertexPointer(size, type, stride, ptr);
}
static void CODEGEN_FUNCPTR Switch_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr)
{
NormalPointer = (PFNNORMALPOINTERPROC)IntGetProcAddress("glNormalPointer");
NormalPointer(type, stride, ptr);
}
static void CODEGEN_FUNCPTR Switch_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr)
{
ColorPointer = (PFNCOLORPOINTERPROC)IntGetProcAddress("glColorPointer");
ColorPointer(size, type, stride, ptr);
}
static void CODEGEN_FUNCPTR Switch_TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr)
{
TexCoordPointer = (PFNTEXCOORDPOINTERPROC)IntGetProcAddress("glTexCoordPointer");
TexCoordPointer(size, type, stride, ptr);
}
static void CODEGEN_FUNCPTR Switch_TexEnvi(GLenum target, GLenum pname, GLint param)
{
TexEnvi = (PFNTEXENVIPROC)IntGetProcAddress("glTexEnvi");
TexEnvi(target, pname, param);
}
static void CODEGEN_FUNCPTR Switch_MatrixMode(GLenum mode)
{
MatrixMode = (PFNMATRIXMODEPROC)IntGetProcAddress("glMatrixMode");
MatrixMode(mode);
}
static void CODEGEN_FUNCPTR Switch_LoadIdentity(void)
{
LoadIdentity = (PFNLOADIDENTITYPROC)IntGetProcAddress("glLoadIdentity");
LoadIdentity();
}
static void CODEGEN_FUNCPTR Switch_Ortho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val)
{
Ortho = (PFNORTHOPROC)IntGetProcAddress("glOrtho");
Ortho(left, right, bottom, top, near_val, far_val);
}
static void CODEGEN_FUNCPTR Switch_Color3d(GLdouble red, GLdouble green, GLdouble blue)
{
Color3d = (PFNCOLOR3DPROC)IntGetProcAddress("glColor3d");
Color3d(red, green, blue);
}
struct InitializeVariables
{
InitializeVariables()
{
// Extension: 1.1
CullFace = Switch_CullFace;
FrontFace = Switch_FrontFace;
Hint = Switch_Hint;
LineWidth = Switch_LineWidth;
PointSize = Switch_PointSize;
PolygonMode = Switch_PolygonMode;
Scissor = Switch_Scissor;
TexParameterf = Switch_TexParameterf;
TexParameterfv = Switch_TexParameterfv;
TexParameteri = Switch_TexParameteri;
TexParameteriv = Switch_TexParameteriv;
TexImage1D = Switch_TexImage1D;
TexImage2D = Switch_TexImage2D;
DrawBuffer = Switch_DrawBuffer;
Clear = Switch_Clear;
ClearColor = Switch_ClearColor;
ClearStencil = Switch_ClearStencil;
ClearDepth = Switch_ClearDepth;
StencilMask = Switch_StencilMask;
ColorMask = Switch_ColorMask;
DepthMask = Switch_DepthMask;
Disable = Switch_Disable;
Enable = Switch_Enable;
Finish = Switch_Finish;
Flush = Switch_Flush;
BlendFunc = Switch_BlendFunc;
LogicOp = Switch_LogicOp;
StencilFunc = Switch_StencilFunc;
StencilOp = Switch_StencilOp;
DepthFunc = Switch_DepthFunc;
PixelStoref = Switch_PixelStoref;
PixelStorei = Switch_PixelStorei;
ReadBuffer = Switch_ReadBuffer;
ReadPixels = Switch_ReadPixels;
GetBooleanv = Switch_GetBooleanv;
GetDoublev = Switch_GetDoublev;
GetError = Switch_GetError;
GetFloatv = Switch_GetFloatv;
GetIntegerv = Switch_GetIntegerv;
GetString = Switch_GetString;
GetTexImage = Switch_GetTexImage;
GetTexParameterfv = Switch_GetTexParameterfv;
GetTexParameteriv = Switch_GetTexParameteriv;
GetTexLevelParameterfv = Switch_GetTexLevelParameterfv;
GetTexLevelParameteriv = Switch_GetTexLevelParameteriv;
IsEnabled = Switch_IsEnabled;
DepthRange = Switch_DepthRange;
Viewport = Switch_Viewport;
DrawArrays = Switch_DrawArrays;
DrawElements = Switch_DrawElements;
GetPointerv = Switch_GetPointerv;
PolygonOffset = Switch_PolygonOffset;
CopyTexImage1D = Switch_CopyTexImage1D;
CopyTexImage2D = Switch_CopyTexImage2D;
CopyTexSubImage1D = Switch_CopyTexSubImage1D;
CopyTexSubImage2D = Switch_CopyTexSubImage2D;
TexSubImage1D = Switch_TexSubImage1D;
TexSubImage2D = Switch_TexSubImage2D;
BindTexture = Switch_BindTexture;
DeleteTextures = Switch_DeleteTextures;
GenTextures = Switch_GenTextures;
IsTexture = Switch_IsTexture;
Indexub = Switch_Indexub;
Indexubv = Switch_Indexubv;
// Extension: 1.2
BlendColor = Switch_BlendColor;
BlendEquation = Switch_BlendEquation;
DrawRangeElements = Switch_DrawRangeElements;
TexSubImage3D = Switch_TexSubImage3D;
CopyTexSubImage3D = Switch_CopyTexSubImage3D;
// Extension: 1.3
ActiveTexture = Switch_ActiveTexture;
SampleCoverage = Switch_SampleCoverage;
CompressedTexImage3D = Switch_CompressedTexImage3D;
CompressedTexImage2D = Switch_CompressedTexImage2D;
CompressedTexImage1D = Switch_CompressedTexImage1D;
CompressedTexSubImage3D = Switch_CompressedTexSubImage3D;
CompressedTexSubImage2D = Switch_CompressedTexSubImage2D;
CompressedTexSubImage1D = Switch_CompressedTexSubImage1D;
GetCompressedTexImage = Switch_GetCompressedTexImage;
// Extension: 1.4
BlendFuncSeparate = Switch_BlendFuncSeparate;
MultiDrawArrays = Switch_MultiDrawArrays;
MultiDrawElements = Switch_MultiDrawElements;
PointParameterf = Switch_PointParameterf;
PointParameterfv = Switch_PointParameterfv;
PointParameteri = Switch_PointParameteri;
PointParameteriv = Switch_PointParameteriv;
// Extension: 1.5
GenQueries = Switch_GenQueries;
DeleteQueries = Switch_DeleteQueries;
IsQuery = Switch_IsQuery;
BeginQuery = Switch_BeginQuery;
EndQuery = Switch_EndQuery;
GetQueryiv = Switch_GetQueryiv;
GetQueryObjectiv = Switch_GetQueryObjectiv;
GetQueryObjectuiv = Switch_GetQueryObjectuiv;
BindBuffer = Switch_BindBuffer;
DeleteBuffers = Switch_DeleteBuffers;
GenBuffers = Switch_GenBuffers;
IsBuffer = Switch_IsBuffer;
BufferData = Switch_BufferData;
BufferSubData = Switch_BufferSubData;
GetBufferSubData = Switch_GetBufferSubData;
MapBuffer = Switch_MapBuffer;
UnmapBuffer = Switch_UnmapBuffer;
GetBufferParameteriv = Switch_GetBufferParameteriv;
GetBufferPointerv = Switch_GetBufferPointerv;
// Extension: 2.0
BlendEquationSeparate = Switch_BlendEquationSeparate;
DrawBuffers = Switch_DrawBuffers;
StencilOpSeparate = Switch_StencilOpSeparate;
StencilFuncSeparate = Switch_StencilFuncSeparate;
StencilMaskSeparate = Switch_StencilMaskSeparate;
AttachShader = Switch_AttachShader;
BindAttribLocation = Switch_BindAttribLocation;
CompileShader = Switch_CompileShader;
CreateProgram = Switch_CreateProgram;
CreateShader = Switch_CreateShader;
DeleteProgram = Switch_DeleteProgram;
DeleteShader = Switch_DeleteShader;
DetachShader = Switch_DetachShader;
DisableVertexAttribArray = Switch_DisableVertexAttribArray;
EnableVertexAttribArray = Switch_EnableVertexAttribArray;
GetActiveAttrib = Switch_GetActiveAttrib;
GetActiveUniform = Switch_GetActiveUniform;
GetAttachedShaders = Switch_GetAttachedShaders;
GetAttribLocation = Switch_GetAttribLocation;
GetProgramiv = Switch_GetProgramiv;
GetProgramInfoLog = Switch_GetProgramInfoLog;
GetShaderiv = Switch_GetShaderiv;
GetShaderInfoLog = Switch_GetShaderInfoLog;
GetShaderSource = Switch_GetShaderSource;
GetUniformLocation = Switch_GetUniformLocation;
GetUniformfv = Switch_GetUniformfv;
GetUniformiv = Switch_GetUniformiv;
GetVertexAttribdv = Switch_GetVertexAttribdv;
GetVertexAttribfv = Switch_GetVertexAttribfv;
GetVertexAttribiv = Switch_GetVertexAttribiv;
GetVertexAttribPointerv = Switch_GetVertexAttribPointerv;
IsProgram = Switch_IsProgram;
IsShader = Switch_IsShader;
LinkProgram = Switch_LinkProgram;
ShaderSource = Switch_ShaderSource;
UseProgram = Switch_UseProgram;
Uniform1f = Switch_Uniform1f;
Uniform2f = Switch_Uniform2f;
Uniform3f = Switch_Uniform3f;
Uniform4f = Switch_Uniform4f;
Uniform1i = Switch_Uniform1i;
Uniform2i = Switch_Uniform2i;
Uniform3i = Switch_Uniform3i;
Uniform4i = Switch_Uniform4i;
Uniform1fv = Switch_Uniform1fv;
Uniform2fv = Switch_Uniform2fv;
Uniform3fv = Switch_Uniform3fv;
Uniform4fv = Switch_Uniform4fv;
Uniform1iv = Switch_Uniform1iv;
Uniform2iv = Switch_Uniform2iv;
Uniform3iv = Switch_Uniform3iv;
Uniform4iv = Switch_Uniform4iv;
UniformMatrix2fv = Switch_UniformMatrix2fv;
UniformMatrix3fv = Switch_UniformMatrix3fv;
UniformMatrix4fv = Switch_UniformMatrix4fv;
ValidateProgram = Switch_ValidateProgram;
VertexAttribPointer = Switch_VertexAttribPointer;
// Extension: 2.1
UniformMatrix2x3fv = Switch_UniformMatrix2x3fv;
UniformMatrix3x2fv = Switch_UniformMatrix3x2fv;
UniformMatrix2x4fv = Switch_UniformMatrix2x4fv;
UniformMatrix4x2fv = Switch_UniformMatrix4x2fv;
UniformMatrix3x4fv = Switch_UniformMatrix3x4fv;
UniformMatrix4x3fv = Switch_UniformMatrix4x3fv;
// Extension: ARB_vertex_array_object
BindVertexArray = Switch_BindVertexArray;
DeleteVertexArrays = Switch_DeleteVertexArrays;
GenVertexArrays = Switch_GenVertexArrays;
IsVertexArray = Switch_IsVertexArray;
// Extension: ARB_map_buffer_range
MapBufferRange = Switch_MapBufferRange;
FlushMappedBufferRange = Switch_FlushMappedBufferRange;
// Extension: ARB_framebuffer_object
IsRenderbuffer = Switch_IsRenderbuffer;
BindRenderbuffer = Switch_BindRenderbuffer;
DeleteRenderbuffers = Switch_DeleteRenderbuffers;
GenRenderbuffers = Switch_GenRenderbuffers;
RenderbufferStorage = Switch_RenderbufferStorage;
GetRenderbufferParameteriv = Switch_GetRenderbufferParameteriv;
IsFramebuffer = Switch_IsFramebuffer;
BindFramebuffer = Switch_BindFramebuffer;
DeleteFramebuffers = Switch_DeleteFramebuffers;
GenFramebuffers = Switch_GenFramebuffers;
CheckFramebufferStatus = Switch_CheckFramebufferStatus;
FramebufferTexture1D = Switch_FramebufferTexture1D;
FramebufferTexture2D = Switch_FramebufferTexture2D;
FramebufferTexture3D = Switch_FramebufferTexture3D;
FramebufferRenderbuffer = Switch_FramebufferRenderbuffer;
GetFramebufferAttachmentParameteriv = Switch_GetFramebufferAttachmentParameteriv;
GenerateMipmap = Switch_GenerateMipmap;
BlitFramebuffer = Switch_BlitFramebuffer;
RenderbufferStorageMultisample = Switch_RenderbufferStorageMultisample;
FramebufferTextureLayer = Switch_FramebufferTextureLayer;
// Extension: 3.0
ColorMaski = Switch_ColorMaski;
GetBooleani_v = Switch_GetBooleani_v;
GetIntegeri_v = Switch_GetIntegeri_v;
Enablei = Switch_Enablei;
Disablei = Switch_Disablei;
IsEnabledi = Switch_IsEnabledi;
BeginTransformFeedback = Switch_BeginTransformFeedback;
EndTransformFeedback = Switch_EndTransformFeedback;
BindBufferRange = Switch_BindBufferRange;
BindBufferBase = Switch_BindBufferBase;
TransformFeedbackVaryings = Switch_TransformFeedbackVaryings;
GetTransformFeedbackVarying = Switch_GetTransformFeedbackVarying;
ClampColor = Switch_ClampColor;
BeginConditionalRender = Switch_BeginConditionalRender;
EndConditionalRender = Switch_EndConditionalRender;
VertexAttribIPointer = Switch_VertexAttribIPointer;
GetVertexAttribIiv = Switch_GetVertexAttribIiv;
GetVertexAttribIuiv = Switch_GetVertexAttribIuiv;
VertexAttribI1i = Switch_VertexAttribI1i;
VertexAttribI2i = Switch_VertexAttribI2i;
VertexAttribI3i = Switch_VertexAttribI3i;
VertexAttribI4i = Switch_VertexAttribI4i;
VertexAttribI1ui = Switch_VertexAttribI1ui;
VertexAttribI2ui = Switch_VertexAttribI2ui;
VertexAttribI3ui = Switch_VertexAttribI3ui;
VertexAttribI4ui = Switch_VertexAttribI4ui;
VertexAttribI1iv = Switch_VertexAttribI1iv;
VertexAttribI2iv = Switch_VertexAttribI2iv;
VertexAttribI3iv = Switch_VertexAttribI3iv;
VertexAttribI4iv = Switch_VertexAttribI4iv;
VertexAttribI1uiv = Switch_VertexAttribI1uiv;
VertexAttribI2uiv = Switch_VertexAttribI2uiv;
VertexAttribI3uiv = Switch_VertexAttribI3uiv;
VertexAttribI4uiv = Switch_VertexAttribI4uiv;
VertexAttribI4bv = Switch_VertexAttribI4bv;
VertexAttribI4sv = Switch_VertexAttribI4sv;
VertexAttribI4ubv = Switch_VertexAttribI4ubv;
VertexAttribI4usv = Switch_VertexAttribI4usv;
GetUniformuiv = Switch_GetUniformuiv;
BindFragDataLocation = Switch_BindFragDataLocation;
GetFragDataLocation = Switch_GetFragDataLocation;
Uniform1ui = Switch_Uniform1ui;
Uniform2ui = Switch_Uniform2ui;
Uniform3ui = Switch_Uniform3ui;
Uniform4ui = Switch_Uniform4ui;
Uniform1uiv = Switch_Uniform1uiv;
Uniform2uiv = Switch_Uniform2uiv;
Uniform3uiv = Switch_Uniform3uiv;
Uniform4uiv = Switch_Uniform4uiv;
TexParameterIiv = Switch_TexParameterIiv;
TexParameterIuiv = Switch_TexParameterIuiv;
GetTexParameterIiv = Switch_GetTexParameterIiv;
GetTexParameterIuiv = Switch_GetTexParameterIuiv;
ClearBufferiv = Switch_ClearBufferiv;
ClearBufferuiv = Switch_ClearBufferuiv;
ClearBufferfv = Switch_ClearBufferfv;
ClearBufferfi = Switch_ClearBufferfi;
GetStringi = Switch_GetStringi;
// Extension: ARB_uniform_buffer_object
GetUniformIndices = Switch_GetUniformIndices;
GetActiveUniformsiv = Switch_GetActiveUniformsiv;
GetActiveUniformName = Switch_GetActiveUniformName;
GetUniformBlockIndex = Switch_GetUniformBlockIndex;
GetActiveUniformBlockiv = Switch_GetActiveUniformBlockiv;
GetActiveUniformBlockName = Switch_GetActiveUniformBlockName;
UniformBlockBinding = Switch_UniformBlockBinding;
// Extension: ARB_copy_buffer
CopyBufferSubData = Switch_CopyBufferSubData;
// Extension: 3.1
DrawArraysInstanced = Switch_DrawArraysInstanced;
DrawElementsInstanced = Switch_DrawElementsInstanced;
TexBuffer = Switch_TexBuffer;
PrimitiveRestartIndex = Switch_PrimitiveRestartIndex;
// Legacy
EnableClientState = Switch_EnableClientState;
DisableClientState = Switch_DisableClientState;
VertexPointer = Switch_VertexPointer;
NormalPointer = Switch_NormalPointer;
ColorPointer = Switch_ColorPointer;
TexCoordPointer = Switch_TexCoordPointer;
TexEnvi = Switch_TexEnvi;
MatrixMode = Switch_MatrixMode;
LoadIdentity = Switch_LoadIdentity;
Ortho = Switch_Ortho;
Color3d = Switch_Color3d;
}
};
InitializeVariables g_initVariables;
}