zorldo

Goofing around with Ebiten
git clone git://bsandro.tech/zorldo
Log | Files | Refs | README

package_notwindows.go (51177B)


      1 // SPDX-License-Identifier: MIT
      2 
      3 //go:build !windows
      4 // +build !windows
      5 
      6 package gl
      7 
      8 // #cgo darwin LDFLAGS: -framework OpenGL
      9 // #cgo linux freebsd pkg-config: gl
     10 //
     11 // #ifndef APIENTRY
     12 //   #define APIENTRY
     13 // #endif
     14 //
     15 // #ifndef APIENTRYP
     16 //   #define APIENTRYP APIENTRY *
     17 // #endif
     18 //
     19 // #ifndef GLAPI
     20 //   #define GLAPI extern
     21 // #endif
     22 //
     23 // #include <stddef.h>
     24 //
     25 // #ifndef GLEXT_64_TYPES_DEFINED
     26 //   /* This code block is duplicated in glxext.h, so must be protected */
     27 //   #define GLEXT_64_TYPES_DEFINED
     28 //   /* Define int32_t, int64_t, and uint64_t types for UST/MSC */
     29 //   /* (as used in the GL_EXT_timer_query extension). */
     30 //   #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
     31 //     #include <inttypes.h>
     32 //   #elif defined(__sun__) || defined(__digital__)
     33 //     #include <inttypes.h>
     34 //     #if defined(__STDC__)
     35 //       #if defined(__arch64__) || defined(_LP64)
     36 //         typedef long int int64_t;
     37 //         typedef unsigned long int uint64_t;
     38 //       #else
     39 //         typedef long long int int64_t;
     40 //         typedef unsigned long long int uint64_t;
     41 //       #endif /* __arch64__ */
     42 //     #endif /* __STDC__ */
     43 //   #elif defined( __VMS ) || defined(__sgi)
     44 //     #include <inttypes.h>
     45 //   #elif defined(__SCO__) || defined(__USLC__)
     46 //     #include <stdint.h>
     47 //   #elif defined(__UNIXOS2__) || defined(__SOL64__)
     48 //     typedef long int int32_t;
     49 //     typedef long long int int64_t;
     50 //     typedef unsigned long long int uint64_t;
     51 //   #else
     52 //     /* Fallback if nothing above works */
     53 //     #include <inttypes.h>
     54 //   #endif
     55 // #endif
     56 //
     57 // typedef unsigned int GLenum;
     58 // typedef unsigned char GLboolean;
     59 // typedef unsigned int GLbitfield;
     60 // typedef signed char GLbyte;
     61 // typedef short GLshort;
     62 // typedef int GLint;
     63 // typedef int GLclampx;
     64 // typedef unsigned char GLubyte;
     65 // typedef unsigned short GLushort;
     66 // typedef unsigned int GLuint;
     67 // typedef int GLsizei;
     68 // typedef float GLfloat;
     69 // typedef float GLclampf;
     70 // typedef double GLdouble;
     71 // typedef double GLclampd;
     72 // typedef void *GLeglClientBufferEXT;
     73 // typedef void *GLeglImageOES;
     74 // typedef char GLchar;
     75 // typedef char GLcharARB;
     76 // #ifdef __APPLE__
     77 // typedef void *GLhandleARB;
     78 // #else
     79 // typedef unsigned int GLhandleARB;
     80 // #endif
     81 // typedef GLint GLfixed;
     82 // typedef ptrdiff_t GLintptr;
     83 // typedef ptrdiff_t GLsizeiptr;
     84 // typedef int64_t GLint64;
     85 // typedef uint64_t GLuint64;
     86 // typedef ptrdiff_t GLintptrARB;
     87 // typedef ptrdiff_t GLsizeiptrARB;
     88 // typedef int64_t GLint64EXT;
     89 // typedef uint64_t GLuint64EXT;
     90 // typedef uintptr_t GLsync;
     91 //
     92 // typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
     93 // typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
     94 // typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
     95 // typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);
     96 // typedef unsigned short GLhalfNV;
     97 // typedef GLintptr GLvdpauSurfaceNV;
     98 //
     99 // typedef void  (APIENTRYP GPACTIVETEXTURE)(GLenum  texture);
    100 // typedef void  (APIENTRYP GPATTACHSHADER)(GLuint  program, GLuint  shader);
    101 // typedef void  (APIENTRYP GPBINDATTRIBLOCATION)(GLuint  program, GLuint  index, const GLchar * name);
    102 // typedef void  (APIENTRYP GPBINDBUFFER)(GLenum  target, GLuint  buffer);
    103 // typedef void  (APIENTRYP GPBINDFRAMEBUFFEREXT)(GLenum  target, GLuint  framebuffer);
    104 // typedef void  (APIENTRYP GPBINDRENDERBUFFEREXT)(GLenum  target, GLuint  renderbuffer);
    105 // typedef void  (APIENTRYP GPBINDTEXTURE)(GLenum  target, GLuint  texture);
    106 // typedef void  (APIENTRYP GPBLENDFUNC)(GLenum  sfactor, GLenum  dfactor);
    107 // typedef void  (APIENTRYP GPBUFFERDATA)(GLenum  target, GLsizeiptr  size, const void * data, GLenum  usage);
    108 // typedef void  (APIENTRYP GPBUFFERSUBDATA)(GLenum  target, GLintptr  offset, GLsizeiptr  size, const void * data);
    109 // typedef GLenum  (APIENTRYP GPCHECKFRAMEBUFFERSTATUSEXT)(GLenum  target);
    110 // typedef void  (APIENTRYP GPCLEAR)(GLbitfield  mask);
    111 // typedef void  (APIENTRYP GPCOLORMASK)(GLboolean  red, GLboolean  green, GLboolean  blue, GLboolean  alpha);
    112 // typedef void  (APIENTRYP GPCOMPILESHADER)(GLuint  shader);
    113 // typedef GLuint  (APIENTRYP GPCREATEPROGRAM)();
    114 // typedef GLuint  (APIENTRYP GPCREATESHADER)(GLenum  type);
    115 // typedef void  (APIENTRYP GPDELETEBUFFERS)(GLsizei  n, const GLuint * buffers);
    116 // typedef void  (APIENTRYP GPDELETEFRAMEBUFFERSEXT)(GLsizei  n, const GLuint * framebuffers);
    117 // typedef void  (APIENTRYP GPDELETEPROGRAM)(GLuint  program);
    118 // typedef void  (APIENTRYP GPDELETERENDERBUFFERSEXT)(GLsizei  n, const GLuint * renderbuffers);
    119 // typedef void  (APIENTRYP GPDELETESHADER)(GLuint  shader);
    120 // typedef void  (APIENTRYP GPDELETETEXTURES)(GLsizei  n, const GLuint * textures);
    121 // typedef void  (APIENTRYP GPDISABLE)(GLenum  cap);
    122 // typedef void  (APIENTRYP GPDISABLEVERTEXATTRIBARRAY)(GLuint  index);
    123 // typedef void  (APIENTRYP GPDRAWELEMENTS)(GLenum  mode, GLsizei  count, GLenum  type, const uintptr_t indices);
    124 // typedef void  (APIENTRYP GPENABLE)(GLenum  cap);
    125 // typedef void  (APIENTRYP GPENABLEVERTEXATTRIBARRAY)(GLuint  index);
    126 // typedef void  (APIENTRYP GPFLUSH)();
    127 // typedef void  (APIENTRYP GPFRAMEBUFFERRENDERBUFFEREXT)(GLenum  target, GLenum  attachment, GLenum  renderbuffertarget, GLuint  renderbuffer);
    128 // typedef void  (APIENTRYP GPFRAMEBUFFERTEXTURE2DEXT)(GLenum  target, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level);
    129 // typedef void  (APIENTRYP GPGENBUFFERS)(GLsizei  n, GLuint * buffers);
    130 // typedef void  (APIENTRYP GPGENFRAMEBUFFERSEXT)(GLsizei  n, GLuint * framebuffers);
    131 // typedef void  (APIENTRYP GPGENRENDERBUFFERSEXT)(GLsizei  n, GLuint * renderbuffers);
    132 // typedef void  (APIENTRYP GPGENTEXTURES)(GLsizei  n, GLuint * textures);
    133 // typedef void  (APIENTRYP GPGETBUFFERSUBDATA)(GLenum  target, GLintptr  offset, GLsizeiptr  size, void * data);
    134 // typedef void  (APIENTRYP GPGETDOUBLEI_V)(GLenum  target, GLuint  index, GLdouble * data);
    135 // typedef void  (APIENTRYP GPGETDOUBLEI_VEXT)(GLenum  pname, GLuint  index, GLdouble * params);
    136 // typedef GLenum  (APIENTRYP GPGETERROR)();
    137 // typedef void  (APIENTRYP GPGETFLOATI_V)(GLenum  target, GLuint  index, GLfloat * data);
    138 // typedef void  (APIENTRYP GPGETFLOATI_VEXT)(GLenum  pname, GLuint  index, GLfloat * params);
    139 // typedef void  (APIENTRYP GPGETINTEGERI_V)(GLenum  target, GLuint  index, GLint * data);
    140 // typedef void  (APIENTRYP GPGETINTEGERUI64I_VNV)(GLenum  value, GLuint  index, GLuint64EXT * result);
    141 // typedef void  (APIENTRYP GPGETINTEGERV)(GLenum  pname, GLint * data);
    142 // typedef void  (APIENTRYP GPGETPOINTERI_VEXT)(GLenum  pname, GLuint  index, void ** params);
    143 // typedef void  (APIENTRYP GPGETPROGRAMINFOLOG)(GLuint  program, GLsizei  bufSize, GLsizei * length, GLchar * infoLog);
    144 // typedef void  (APIENTRYP GPGETPROGRAMIV)(GLuint  program, GLenum  pname, GLint * params);
    145 // typedef void  (APIENTRYP GPGETSHADERINFOLOG)(GLuint  shader, GLsizei  bufSize, GLsizei * length, GLchar * infoLog);
    146 // typedef void  (APIENTRYP GPGETSHADERIV)(GLuint  shader, GLenum  pname, GLint * params);
    147 // typedef void  (APIENTRYP GPGETTRANSFORMFEEDBACKI64_V)(GLuint  xfb, GLenum  pname, GLuint  index, GLint64 * param);
    148 // typedef void  (APIENTRYP GPGETTRANSFORMFEEDBACKI_V)(GLuint  xfb, GLenum  pname, GLuint  index, GLint * param);
    149 // typedef GLint  (APIENTRYP GPGETUNIFORMLOCATION)(GLuint  program, const GLchar * name);
    150 // typedef void  (APIENTRYP GPGETUNSIGNEDBYTEI_VEXT)(GLenum  target, GLuint  index, GLubyte * data);
    151 // typedef void  (APIENTRYP GPGETVERTEXARRAYINTEGERI_VEXT)(GLuint  vaobj, GLuint  index, GLenum  pname, GLint * param);
    152 // typedef void  (APIENTRYP GPGETVERTEXARRAYPOINTERI_VEXT)(GLuint  vaobj, GLuint  index, GLenum  pname, void ** param);
    153 // typedef GLboolean  (APIENTRYP GPISFRAMEBUFFEREXT)(GLuint  framebuffer);
    154 // typedef GLboolean  (APIENTRYP GPISPROGRAM)(GLuint  program);
    155 // typedef GLboolean  (APIENTRYP GPISRENDERBUFFEREXT)(GLuint  renderbuffer);
    156 // typedef GLboolean  (APIENTRYP GPISTEXTURE)(GLuint  texture);
    157 // typedef void  (APIENTRYP GPLINKPROGRAM)(GLuint  program);
    158 // typedef void  (APIENTRYP GPPIXELSTOREI)(GLenum  pname, GLint  param);
    159 // typedef void  (APIENTRYP GPREADPIXELS)(GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, void * pixels);
    160 // typedef void  (APIENTRYP GPRENDERBUFFERSTORAGEEXT)(GLenum  target, GLenum  internalformat, GLsizei  width, GLsizei  height);
    161 // typedef void  (APIENTRYP GPSCISSOR)(GLint  x, GLint  y, GLsizei  width, GLsizei  height);
    162 // typedef void  (APIENTRYP GPSHADERSOURCE)(GLuint  shader, GLsizei  count, const GLchar *const* string, const GLint * length);
    163 // typedef void  (APIENTRYP GPSTENCILFUNC)(GLenum  func, GLint  ref, GLuint  mask);
    164 // typedef void  (APIENTRYP GPSTENCILOP)(GLenum  fail, GLenum  zfail, GLenum  zpass);
    165 // typedef void  (APIENTRYP GPTEXIMAGE2D)(GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLenum  format, GLenum  type, const void * pixels);
    166 // typedef void  (APIENTRYP GPTEXPARAMETERI)(GLenum  target, GLenum  pname, GLint  param);
    167 // typedef void  (APIENTRYP GPTEXSUBIMAGE2D)(GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels);
    168 // typedef void  (APIENTRYP GPUNIFORM1F)(GLint  location, GLfloat  v0);
    169 // typedef void  (APIENTRYP GPUNIFORM1I)(GLint  location, GLint  v0);
    170 // typedef void  (APIENTRYP GPUNIFORM1FV)(GLint  location, GLsizei  count, const GLfloat * value);
    171 // typedef void  (APIENTRYP GPUNIFORM2FV)(GLint  location, GLsizei  count, const GLfloat * value);
    172 // typedef void  (APIENTRYP GPUNIFORM3FV)(GLint  location, GLsizei  count, const GLfloat * value);
    173 // typedef void  (APIENTRYP GPUNIFORM4FV)(GLint  location, GLsizei  count, const GLfloat * value);
    174 // typedef void  (APIENTRYP GPUNIFORMMATRIX2FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
    175 // typedef void  (APIENTRYP GPUNIFORMMATRIX3FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
    176 // typedef void  (APIENTRYP GPUNIFORMMATRIX4FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
    177 // typedef void  (APIENTRYP GPUSEPROGRAM)(GLuint  program);
    178 // typedef void  (APIENTRYP GPVERTEXATTRIBPOINTER)(GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride, const uintptr_t pointer);
    179 // typedef void  (APIENTRYP GPVIEWPORT)(GLint  x, GLint  y, GLsizei  width, GLsizei  height);
    180 //
    181 // static void  glowActiveTexture(GPACTIVETEXTURE fnptr, GLenum  texture) {
    182 //   (*fnptr)(texture);
    183 // }
    184 // static void  glowAttachShader(GPATTACHSHADER fnptr, GLuint  program, GLuint  shader) {
    185 //   (*fnptr)(program, shader);
    186 // }
    187 // static void  glowBindAttribLocation(GPBINDATTRIBLOCATION fnptr, GLuint  program, GLuint  index, const GLchar * name) {
    188 //   (*fnptr)(program, index, name);
    189 // }
    190 // static void  glowBindBuffer(GPBINDBUFFER fnptr, GLenum  target, GLuint  buffer) {
    191 //   (*fnptr)(target, buffer);
    192 // }
    193 // static void  glowBindFramebufferEXT(GPBINDFRAMEBUFFEREXT fnptr, GLenum  target, GLuint  framebuffer) {
    194 //   (*fnptr)(target, framebuffer);
    195 // }
    196 // static void  glowBindRenderbufferEXT(GPBINDRENDERBUFFEREXT fnptr, GLenum  target, GLuint  renderbuffer) {
    197 //   (*fnptr)(target, renderbuffer);
    198 // }
    199 // static void  glowBindTexture(GPBINDTEXTURE fnptr, GLenum  target, GLuint  texture) {
    200 //   (*fnptr)(target, texture);
    201 // }
    202 // static void  glowBlendFunc(GPBLENDFUNC fnptr, GLenum  sfactor, GLenum  dfactor) {
    203 //   (*fnptr)(sfactor, dfactor);
    204 // }
    205 // static void  glowBufferData(GPBUFFERDATA fnptr, GLenum  target, GLsizeiptr  size, const void * data, GLenum  usage) {
    206 //   (*fnptr)(target, size, data, usage);
    207 // }
    208 // static void  glowBufferSubData(GPBUFFERSUBDATA fnptr, GLenum  target, GLintptr  offset, GLsizeiptr  size, const void * data) {
    209 //   (*fnptr)(target, offset, size, data);
    210 // }
    211 // static GLenum  glowCheckFramebufferStatusEXT(GPCHECKFRAMEBUFFERSTATUSEXT fnptr, GLenum  target) {
    212 //   return (*fnptr)(target);
    213 // }
    214 // static void  glowClear(GPCLEAR fnptr, GLbitfield  mask) {
    215 //   (*fnptr)(mask);
    216 // }
    217 // static void  glowColorMask(GPCOLORMASK fnptr, GLboolean  red, GLboolean  green, GLboolean  blue, GLboolean  alpha) {
    218 //   (*fnptr)(red, green, blue, alpha);
    219 // }
    220 // static void  glowCompileShader(GPCOMPILESHADER fnptr, GLuint  shader) {
    221 //   (*fnptr)(shader);
    222 // }
    223 // static GLuint  glowCreateProgram(GPCREATEPROGRAM fnptr) {
    224 //   return (*fnptr)();
    225 // }
    226 // static GLuint  glowCreateShader(GPCREATESHADER fnptr, GLenum  type) {
    227 //   return (*fnptr)(type);
    228 // }
    229 // static void  glowDeleteBuffers(GPDELETEBUFFERS fnptr, GLsizei  n, const GLuint * buffers) {
    230 //   (*fnptr)(n, buffers);
    231 // }
    232 // static void  glowDeleteFramebuffersEXT(GPDELETEFRAMEBUFFERSEXT fnptr, GLsizei  n, const GLuint * framebuffers) {
    233 //   (*fnptr)(n, framebuffers);
    234 // }
    235 // static void  glowDeleteProgram(GPDELETEPROGRAM fnptr, GLuint  program) {
    236 //   (*fnptr)(program);
    237 // }
    238 // static void  glowDeleteRenderbuffersEXT(GPDELETERENDERBUFFERSEXT fnptr, GLsizei  n, const GLuint * renderbuffers) {
    239 //   (*fnptr)(n, renderbuffers);
    240 // }
    241 // static void  glowDeleteShader(GPDELETESHADER fnptr, GLuint  shader) {
    242 //   (*fnptr)(shader);
    243 // }
    244 // static void  glowDeleteTextures(GPDELETETEXTURES fnptr, GLsizei  n, const GLuint * textures) {
    245 //   (*fnptr)(n, textures);
    246 // }
    247 // static void  glowDisable(GPDISABLE fnptr, GLenum  cap) {
    248 //   (*fnptr)(cap);
    249 // }
    250 // static void  glowDisableVertexAttribArray(GPDISABLEVERTEXATTRIBARRAY fnptr, GLuint  index) {
    251 //   (*fnptr)(index);
    252 // }
    253 // static void  glowDrawElements(GPDRAWELEMENTS fnptr, GLenum  mode, GLsizei  count, GLenum  type, const uintptr_t indices) {
    254 //   (*fnptr)(mode, count, type, indices);
    255 // }
    256 // static void  glowEnable(GPENABLE fnptr, GLenum  cap) {
    257 //   (*fnptr)(cap);
    258 // }
    259 // static void  glowEnableVertexAttribArray(GPENABLEVERTEXATTRIBARRAY fnptr, GLuint  index) {
    260 //   (*fnptr)(index);
    261 // }
    262 // static void  glowFlush(GPFLUSH fnptr) {
    263 //   (*fnptr)();
    264 // }
    265 // static void  glowFramebufferRenderbufferEXT(GPFRAMEBUFFERRENDERBUFFEREXT fnptr, GLenum  target, GLenum  attachment, GLenum  renderbuffertarget, GLuint  renderbuffer) {
    266 //   (*fnptr)(target, attachment, renderbuffertarget, renderbuffer);
    267 // }
    268 // static void  glowFramebufferTexture2DEXT(GPFRAMEBUFFERTEXTURE2DEXT fnptr, GLenum  target, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level) {
    269 //   (*fnptr)(target, attachment, textarget, texture, level);
    270 // }
    271 // static void  glowGenBuffers(GPGENBUFFERS fnptr, GLsizei  n, GLuint * buffers) {
    272 //   (*fnptr)(n, buffers);
    273 // }
    274 // static void  glowGenFramebuffersEXT(GPGENFRAMEBUFFERSEXT fnptr, GLsizei  n, GLuint * framebuffers) {
    275 //   (*fnptr)(n, framebuffers);
    276 // }
    277 // static void  glowGenRenderbuffersEXT(GPGENRENDERBUFFERSEXT fnptr, GLsizei  n, GLuint * renderbuffers) {
    278 //   (*fnptr)(n, renderbuffers);
    279 // }
    280 // static void  glowGenTextures(GPGENTEXTURES fnptr, GLsizei  n, GLuint * textures) {
    281 //   (*fnptr)(n, textures);
    282 // }
    283 // static void  glowGetBufferSubData(GPGETBUFFERSUBDATA fnptr, GLenum  target, GLintptr  offset, GLsizeiptr  size, void * data) {
    284 //   (*fnptr)(target, offset, size, data);
    285 // }
    286 // static void  glowGetDoublei_v(GPGETDOUBLEI_V fnptr, GLenum  target, GLuint  index, GLdouble * data) {
    287 //   (*fnptr)(target, index, data);
    288 // }
    289 // static void  glowGetDoublei_vEXT(GPGETDOUBLEI_VEXT fnptr, GLenum  pname, GLuint  index, GLdouble * params) {
    290 //   (*fnptr)(pname, index, params);
    291 // }
    292 // static GLenum  glowGetError(GPGETERROR fnptr) {
    293 //   return (*fnptr)();
    294 // }
    295 // static void  glowGetFloati_v(GPGETFLOATI_V fnptr, GLenum  target, GLuint  index, GLfloat * data) {
    296 //   (*fnptr)(target, index, data);
    297 // }
    298 // static void  glowGetFloati_vEXT(GPGETFLOATI_VEXT fnptr, GLenum  pname, GLuint  index, GLfloat * params) {
    299 //   (*fnptr)(pname, index, params);
    300 // }
    301 // static void  glowGetIntegeri_v(GPGETINTEGERI_V fnptr, GLenum  target, GLuint  index, GLint * data) {
    302 //   (*fnptr)(target, index, data);
    303 // }
    304 // static void  glowGetIntegerui64i_vNV(GPGETINTEGERUI64I_VNV fnptr, GLenum  value, GLuint  index, GLuint64EXT * result) {
    305 //   (*fnptr)(value, index, result);
    306 // }
    307 // static void  glowGetIntegerv(GPGETINTEGERV fnptr, GLenum  pname, GLint * data) {
    308 //   (*fnptr)(pname, data);
    309 // }
    310 // static void  glowGetPointeri_vEXT(GPGETPOINTERI_VEXT fnptr, GLenum  pname, GLuint  index, void ** params) {
    311 //   (*fnptr)(pname, index, params);
    312 // }
    313 // static void  glowGetProgramInfoLog(GPGETPROGRAMINFOLOG fnptr, GLuint  program, GLsizei  bufSize, GLsizei * length, GLchar * infoLog) {
    314 //   (*fnptr)(program, bufSize, length, infoLog);
    315 // }
    316 // static void  glowGetProgramiv(GPGETPROGRAMIV fnptr, GLuint  program, GLenum  pname, GLint * params) {
    317 //   (*fnptr)(program, pname, params);
    318 // }
    319 // static void  glowGetShaderInfoLog(GPGETSHADERINFOLOG fnptr, GLuint  shader, GLsizei  bufSize, GLsizei * length, GLchar * infoLog) {
    320 //   (*fnptr)(shader, bufSize, length, infoLog);
    321 // }
    322 // static void  glowGetShaderiv(GPGETSHADERIV fnptr, GLuint  shader, GLenum  pname, GLint * params) {
    323 //   (*fnptr)(shader, pname, params);
    324 // }
    325 // static void  glowGetTransformFeedbacki64_v(GPGETTRANSFORMFEEDBACKI64_V fnptr, GLuint  xfb, GLenum  pname, GLuint  index, GLint64 * param) {
    326 //   (*fnptr)(xfb, pname, index, param);
    327 // }
    328 // static void  glowGetTransformFeedbacki_v(GPGETTRANSFORMFEEDBACKI_V fnptr, GLuint  xfb, GLenum  pname, GLuint  index, GLint * param) {
    329 //   (*fnptr)(xfb, pname, index, param);
    330 // }
    331 // static GLint  glowGetUniformLocation(GPGETUNIFORMLOCATION fnptr, GLuint  program, const GLchar * name) {
    332 //   return (*fnptr)(program, name);
    333 // }
    334 // static void  glowGetUnsignedBytei_vEXT(GPGETUNSIGNEDBYTEI_VEXT fnptr, GLenum  target, GLuint  index, GLubyte * data) {
    335 //   (*fnptr)(target, index, data);
    336 // }
    337 // static void  glowGetVertexArrayIntegeri_vEXT(GPGETVERTEXARRAYINTEGERI_VEXT fnptr, GLuint  vaobj, GLuint  index, GLenum  pname, GLint * param) {
    338 //   (*fnptr)(vaobj, index, pname, param);
    339 // }
    340 // static void  glowGetVertexArrayPointeri_vEXT(GPGETVERTEXARRAYPOINTERI_VEXT fnptr, GLuint  vaobj, GLuint  index, GLenum  pname, void ** param) {
    341 //   (*fnptr)(vaobj, index, pname, param);
    342 // }
    343 // static GLboolean  glowIsFramebufferEXT(GPISFRAMEBUFFEREXT fnptr, GLuint  framebuffer) {
    344 //   return (*fnptr)(framebuffer);
    345 // }
    346 // static GLboolean  glowIsProgram(GPISPROGRAM fnptr, GLuint  program) {
    347 //   return (*fnptr)(program);
    348 // }
    349 // static GLboolean  glowIsRenderbufferEXT(GPISRENDERBUFFEREXT fnptr, GLuint  renderbuffer) {
    350 //   return (*fnptr)(renderbuffer);
    351 // }
    352 // static GLboolean  glowIsTexture(GPISTEXTURE fnptr, GLuint  texture) {
    353 //   return (*fnptr)(texture);
    354 // }
    355 // static void  glowLinkProgram(GPLINKPROGRAM fnptr, GLuint  program) {
    356 //   (*fnptr)(program);
    357 // }
    358 // static void  glowPixelStorei(GPPIXELSTOREI fnptr, GLenum  pname, GLint  param) {
    359 //   (*fnptr)(pname, param);
    360 // }
    361 // static void  glowReadPixels(GPREADPIXELS fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, void * pixels) {
    362 //   (*fnptr)(x, y, width, height, format, type, pixels);
    363 // }
    364 // static void  glowRenderbufferStorageEXT(GPRENDERBUFFERSTORAGEEXT fnptr, GLenum  target, GLenum  internalformat, GLsizei  width, GLsizei  height) {
    365 //   (*fnptr)(target, internalformat, width, height);
    366 // }
    367 // static void  glowScissor(GPSCISSOR fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
    368 //   (*fnptr)(x, y, width, height);
    369 // }
    370 // static void  glowShaderSource(GPSHADERSOURCE fnptr, GLuint  shader, GLsizei  count, const GLchar *const* string, const GLint * length) {
    371 //   (*fnptr)(shader, count, string, length);
    372 // }
    373 // static void  glowStencilFunc(GPSTENCILFUNC fnptr, GLenum  func, GLint  ref, GLuint  mask) {
    374 //   (*fnptr)(func, ref, mask);
    375 // }
    376 // static void  glowStencilOp(GPSTENCILOP fnptr, GLenum  fail, GLenum  zfail, GLenum  zpass) {
    377 //   (*fnptr)(fail, zfail, zpass);
    378 // }
    379 // static void  glowTexImage2D(GPTEXIMAGE2D fnptr, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
    380 //   (*fnptr)(target, level, internalformat, width, height, border, format, type, pixels);
    381 // }
    382 // static void  glowTexParameteri(GPTEXPARAMETERI fnptr, GLenum  target, GLenum  pname, GLint  param) {
    383 //   (*fnptr)(target, pname, param);
    384 // }
    385 // static void  glowTexSubImage2D(GPTEXSUBIMAGE2D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels) {
    386 //   (*fnptr)(target, level, xoffset, yoffset, width, height, format, type, pixels);
    387 // }
    388 // static void  glowUniform1f(GPUNIFORM1F fnptr, GLint  location, GLfloat  v0) {
    389 //   (*fnptr)(location, v0);
    390 // }
    391 // static void  glowUniform1i(GPUNIFORM1I fnptr, GLint  location, GLint  v0) {
    392 //   (*fnptr)(location, v0);
    393 // }
    394 // static void  glowUniform1fv(GPUNIFORM1FV fnptr, GLint  location, GLsizei  count, const GLfloat * value) {
    395 //   (*fnptr)(location, count, value);
    396 // }
    397 // static void  glowUniform2fv(GPUNIFORM2FV fnptr, GLint  location, GLsizei  count, const GLfloat * value) {
    398 //   (*fnptr)(location, count, value);
    399 // }
    400 // static void  glowUniform3fv(GPUNIFORM3FV fnptr, GLint  location, GLsizei  count, const GLfloat * value) {
    401 //   (*fnptr)(location, count, value);
    402 // }
    403 // static void  glowUniform4fv(GPUNIFORM4FV fnptr, GLint  location, GLsizei  count, const GLfloat * value) {
    404 //   (*fnptr)(location, count, value);
    405 // }
    406 // static void  glowUniformMatrix2fv(GPUNIFORMMATRIX2FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
    407 //   (*fnptr)(location, count, transpose, value);
    408 // }
    409 // static void  glowUniformMatrix3fv(GPUNIFORMMATRIX3FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
    410 //   (*fnptr)(location, count, transpose, value);
    411 // }
    412 // static void  glowUniformMatrix4fv(GPUNIFORMMATRIX4FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
    413 //   (*fnptr)(location, count, transpose, value);
    414 // }
    415 // static void  glowUseProgram(GPUSEPROGRAM fnptr, GLuint  program) {
    416 //   (*fnptr)(program);
    417 // }
    418 // static void  glowVertexAttribPointer(GPVERTEXATTRIBPOINTER fnptr, GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride, const uintptr_t pointer) {
    419 //   (*fnptr)(index, size, type, normalized, stride, pointer);
    420 // }
    421 // static void  glowViewport(GPVIEWPORT fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
    422 //   (*fnptr)(x, y, width, height);
    423 // }
    424 import "C"
    425 
    426 import (
    427 	"errors"
    428 	"unsafe"
    429 )
    430 
    431 var (
    432 	gpActiveTexture               C.GPACTIVETEXTURE
    433 	gpAttachShader                C.GPATTACHSHADER
    434 	gpBindAttribLocation          C.GPBINDATTRIBLOCATION
    435 	gpBindBuffer                  C.GPBINDBUFFER
    436 	gpBindFramebufferEXT          C.GPBINDFRAMEBUFFEREXT
    437 	gpBindRenderbufferEXT         C.GPBINDRENDERBUFFEREXT
    438 	gpBindTexture                 C.GPBINDTEXTURE
    439 	gpBlendFunc                   C.GPBLENDFUNC
    440 	gpBufferData                  C.GPBUFFERDATA
    441 	gpBufferSubData               C.GPBUFFERSUBDATA
    442 	gpCheckFramebufferStatusEXT   C.GPCHECKFRAMEBUFFERSTATUSEXT
    443 	gpClear                       C.GPCLEAR
    444 	gpColorMask                   C.GPCOLORMASK
    445 	gpCompileShader               C.GPCOMPILESHADER
    446 	gpCreateProgram               C.GPCREATEPROGRAM
    447 	gpCreateShader                C.GPCREATESHADER
    448 	gpDeleteBuffers               C.GPDELETEBUFFERS
    449 	gpDeleteFramebuffersEXT       C.GPDELETEFRAMEBUFFERSEXT
    450 	gpDeleteProgram               C.GPDELETEPROGRAM
    451 	gpDeleteRenderbuffersEXT      C.GPDELETERENDERBUFFERSEXT
    452 	gpDeleteShader                C.GPDELETESHADER
    453 	gpDeleteTextures              C.GPDELETETEXTURES
    454 	gpDisable                     C.GPDISABLE
    455 	gpDisableVertexAttribArray    C.GPDISABLEVERTEXATTRIBARRAY
    456 	gpDrawElements                C.GPDRAWELEMENTS
    457 	gpEnable                      C.GPENABLE
    458 	gpEnableVertexAttribArray     C.GPENABLEVERTEXATTRIBARRAY
    459 	gpFlush                       C.GPFLUSH
    460 	gpFramebufferRenderbufferEXT  C.GPFRAMEBUFFERRENDERBUFFEREXT
    461 	gpFramebufferTexture2DEXT     C.GPFRAMEBUFFERTEXTURE2DEXT
    462 	gpGenBuffers                  C.GPGENBUFFERS
    463 	gpGenFramebuffersEXT          C.GPGENFRAMEBUFFERSEXT
    464 	gpGenRenderbuffersEXT         C.GPGENRENDERBUFFERSEXT
    465 	gpGenTextures                 C.GPGENTEXTURES
    466 	gpGetBufferSubData            C.GPGETBUFFERSUBDATA
    467 	gpGetDoublei_v                C.GPGETDOUBLEI_V
    468 	gpGetDoublei_vEXT             C.GPGETDOUBLEI_VEXT
    469 	gpGetError                    C.GPGETERROR
    470 	gpGetFloati_v                 C.GPGETFLOATI_V
    471 	gpGetFloati_vEXT              C.GPGETFLOATI_VEXT
    472 	gpGetIntegeri_v               C.GPGETINTEGERI_V
    473 	gpGetIntegerui64i_vNV         C.GPGETINTEGERUI64I_VNV
    474 	gpGetIntegerv                 C.GPGETINTEGERV
    475 	gpGetPointeri_vEXT            C.GPGETPOINTERI_VEXT
    476 	gpGetProgramInfoLog           C.GPGETPROGRAMINFOLOG
    477 	gpGetProgramiv                C.GPGETPROGRAMIV
    478 	gpGetShaderInfoLog            C.GPGETSHADERINFOLOG
    479 	gpGetShaderiv                 C.GPGETSHADERIV
    480 	gpGetTransformFeedbacki64_v   C.GPGETTRANSFORMFEEDBACKI64_V
    481 	gpGetTransformFeedbacki_v     C.GPGETTRANSFORMFEEDBACKI_V
    482 	gpGetUniformLocation          C.GPGETUNIFORMLOCATION
    483 	gpGetUnsignedBytei_vEXT       C.GPGETUNSIGNEDBYTEI_VEXT
    484 	gpGetVertexArrayIntegeri_vEXT C.GPGETVERTEXARRAYINTEGERI_VEXT
    485 	gpGetVertexArrayPointeri_vEXT C.GPGETVERTEXARRAYPOINTERI_VEXT
    486 	gpIsFramebufferEXT            C.GPISFRAMEBUFFEREXT
    487 	gpIsProgram                   C.GPISPROGRAM
    488 	gpIsRenderbufferEXT           C.GPISRENDERBUFFEREXT
    489 	gpIsTexture                   C.GPISTEXTURE
    490 	gpLinkProgram                 C.GPLINKPROGRAM
    491 	gpPixelStorei                 C.GPPIXELSTOREI
    492 	gpReadPixels                  C.GPREADPIXELS
    493 	gpRenderbufferStorageEXT      C.GPRENDERBUFFERSTORAGEEXT
    494 	gpScissor                     C.GPSCISSOR
    495 	gpShaderSource                C.GPSHADERSOURCE
    496 	gpStencilFunc                 C.GPSTENCILFUNC
    497 	gpStencilOp                   C.GPSTENCILOP
    498 	gpTexImage2D                  C.GPTEXIMAGE2D
    499 	gpTexParameteri               C.GPTEXPARAMETERI
    500 	gpTexSubImage2D               C.GPTEXSUBIMAGE2D
    501 	gpUniform1f                   C.GPUNIFORM1F
    502 	gpUniform1i                   C.GPUNIFORM1I
    503 	gpUniform1fv                  C.GPUNIFORM1FV
    504 	gpUniform2fv                  C.GPUNIFORM2FV
    505 	gpUniform3fv                  C.GPUNIFORM3FV
    506 	gpUniform4fv                  C.GPUNIFORM4FV
    507 	gpUniformMatrix2fv            C.GPUNIFORMMATRIX2FV
    508 	gpUniformMatrix3fv            C.GPUNIFORMMATRIX3FV
    509 	gpUniformMatrix4fv            C.GPUNIFORMMATRIX4FV
    510 	gpUseProgram                  C.GPUSEPROGRAM
    511 	gpVertexAttribPointer         C.GPVERTEXATTRIBPOINTER
    512 	gpViewport                    C.GPVIEWPORT
    513 )
    514 
    515 func boolToInt(b bool) int {
    516 	if b {
    517 		return 1
    518 	}
    519 	return 0
    520 }
    521 
    522 func ActiveTexture(texture uint32) {
    523 	C.glowActiveTexture(gpActiveTexture, (C.GLenum)(texture))
    524 }
    525 
    526 func AttachShader(program uint32, shader uint32) {
    527 	C.glowAttachShader(gpAttachShader, (C.GLuint)(program), (C.GLuint)(shader))
    528 }
    529 
    530 func BindAttribLocation(program uint32, index uint32, name *uint8) {
    531 	C.glowBindAttribLocation(gpBindAttribLocation, (C.GLuint)(program), (C.GLuint)(index), (*C.GLchar)(unsafe.Pointer(name)))
    532 }
    533 
    534 func BindBuffer(target uint32, buffer uint32) {
    535 	C.glowBindBuffer(gpBindBuffer, (C.GLenum)(target), (C.GLuint)(buffer))
    536 }
    537 
    538 func BindFramebufferEXT(target uint32, framebuffer uint32) {
    539 	C.glowBindFramebufferEXT(gpBindFramebufferEXT, (C.GLenum)(target), (C.GLuint)(framebuffer))
    540 }
    541 
    542 func BindRenderbufferEXT(target uint32, renderbuffer uint32) {
    543 	C.glowBindRenderbufferEXT(gpBindRenderbufferEXT, (C.GLenum)(target), (C.GLuint)(renderbuffer))
    544 }
    545 
    546 func BindTexture(target uint32, texture uint32) {
    547 	C.glowBindTexture(gpBindTexture, (C.GLenum)(target), (C.GLuint)(texture))
    548 }
    549 
    550 func BlendFunc(sfactor uint32, dfactor uint32) {
    551 	C.glowBlendFunc(gpBlendFunc, (C.GLenum)(sfactor), (C.GLenum)(dfactor))
    552 }
    553 
    554 func BufferData(target uint32, size int, data unsafe.Pointer, usage uint32) {
    555 	C.glowBufferData(gpBufferData, (C.GLenum)(target), (C.GLsizeiptr)(size), data, (C.GLenum)(usage))
    556 }
    557 
    558 func BufferSubData(target uint32, offset int, size int, data unsafe.Pointer) {
    559 	C.glowBufferSubData(gpBufferSubData, (C.GLenum)(target), (C.GLintptr)(offset), (C.GLsizeiptr)(size), data)
    560 }
    561 
    562 func CheckFramebufferStatusEXT(target uint32) uint32 {
    563 	ret := C.glowCheckFramebufferStatusEXT(gpCheckFramebufferStatusEXT, (C.GLenum)(target))
    564 	return (uint32)(ret)
    565 }
    566 
    567 func Clear(mask uint32) {
    568 	C.glowClear(gpClear, (C.GLbitfield)(mask))
    569 }
    570 
    571 func ColorMask(red bool, green bool, blue bool, alpha bool) {
    572 	C.glowColorMask(gpColorMask, (C.GLboolean)(boolToInt(red)), (C.GLboolean)(boolToInt(green)), (C.GLboolean)(boolToInt(blue)), (C.GLboolean)(boolToInt(alpha)))
    573 }
    574 
    575 func CompileShader(shader uint32) {
    576 	C.glowCompileShader(gpCompileShader, (C.GLuint)(shader))
    577 }
    578 
    579 func CreateProgram() uint32 {
    580 	ret := C.glowCreateProgram(gpCreateProgram)
    581 	return (uint32)(ret)
    582 }
    583 
    584 func CreateShader(xtype uint32) uint32 {
    585 	ret := C.glowCreateShader(gpCreateShader, (C.GLenum)(xtype))
    586 	return (uint32)(ret)
    587 }
    588 
    589 func DeleteBuffers(n int32, buffers *uint32) {
    590 	C.glowDeleteBuffers(gpDeleteBuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(buffers)))
    591 }
    592 
    593 func DeleteFramebuffersEXT(n int32, framebuffers *uint32) {
    594 	C.glowDeleteFramebuffersEXT(gpDeleteFramebuffersEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(framebuffers)))
    595 }
    596 
    597 func DeleteProgram(program uint32) {
    598 	C.glowDeleteProgram(gpDeleteProgram, (C.GLuint)(program))
    599 }
    600 
    601 func DeleteRenderbuffersEXT(n int32, renderbuffers *uint32) {
    602 	C.glowDeleteRenderbuffersEXT(gpDeleteRenderbuffersEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(renderbuffers)))
    603 }
    604 
    605 func DeleteShader(shader uint32) {
    606 	C.glowDeleteShader(gpDeleteShader, (C.GLuint)(shader))
    607 }
    608 
    609 func DeleteTextures(n int32, textures *uint32) {
    610 	C.glowDeleteTextures(gpDeleteTextures, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures)))
    611 }
    612 
    613 func Disable(cap uint32) {
    614 	C.glowDisable(gpDisable, (C.GLenum)(cap))
    615 }
    616 
    617 func DisableVertexAttribArray(index uint32) {
    618 	C.glowDisableVertexAttribArray(gpDisableVertexAttribArray, (C.GLuint)(index))
    619 }
    620 
    621 func DrawElements(mode uint32, count int32, xtype uint32, indices uintptr) {
    622 	C.glowDrawElements(gpDrawElements, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), C.uintptr_t(indices))
    623 }
    624 
    625 func Enable(cap uint32) {
    626 	C.glowEnable(gpEnable, (C.GLenum)(cap))
    627 }
    628 
    629 func EnableVertexAttribArray(index uint32) {
    630 	C.glowEnableVertexAttribArray(gpEnableVertexAttribArray, (C.GLuint)(index))
    631 }
    632 
    633 func Flush() {
    634 	C.glowFlush(gpFlush)
    635 }
    636 
    637 func FramebufferRenderbufferEXT(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
    638 	C.glowFramebufferRenderbufferEXT(gpFramebufferRenderbufferEXT, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(renderbuffertarget), (C.GLuint)(renderbuffer))
    639 }
    640 
    641 func FramebufferTexture2DEXT(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
    642 	C.glowFramebufferTexture2DEXT(gpFramebufferTexture2DEXT, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level))
    643 }
    644 
    645 func GenBuffers(n int32, buffers *uint32) {
    646 	C.glowGenBuffers(gpGenBuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(buffers)))
    647 }
    648 
    649 func GenFramebuffersEXT(n int32, framebuffers *uint32) {
    650 	C.glowGenFramebuffersEXT(gpGenFramebuffersEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(framebuffers)))
    651 }
    652 
    653 func GenRenderbuffersEXT(n int32, renderbuffers *uint32) {
    654 	C.glowGenRenderbuffersEXT(gpGenRenderbuffersEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(renderbuffers)))
    655 }
    656 
    657 func GenTextures(n int32, textures *uint32) {
    658 	C.glowGenTextures(gpGenTextures, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures)))
    659 }
    660 
    661 func GetBufferSubData(target uint32, offset int, size int, data unsafe.Pointer) {
    662 	C.glowGetBufferSubData(gpGetBufferSubData, (C.GLenum)(target), (C.GLintptr)(offset), (C.GLsizeiptr)(size), data)
    663 }
    664 
    665 func GetDoublei_v(target uint32, index uint32, data *float64) {
    666 	C.glowGetDoublei_v(gpGetDoublei_v, (C.GLenum)(target), (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(data)))
    667 }
    668 func GetDoublei_vEXT(pname uint32, index uint32, params *float64) {
    669 	C.glowGetDoublei_vEXT(gpGetDoublei_vEXT, (C.GLenum)(pname), (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(params)))
    670 }
    671 
    672 func GetError() uint32 {
    673 	ret := C.glowGetError(gpGetError)
    674 	return (uint32)(ret)
    675 }
    676 func GetFloati_v(target uint32, index uint32, data *float32) {
    677 	C.glowGetFloati_v(gpGetFloati_v, (C.GLenum)(target), (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(data)))
    678 }
    679 func GetFloati_vEXT(pname uint32, index uint32, params *float32) {
    680 	C.glowGetFloati_vEXT(gpGetFloati_vEXT, (C.GLenum)(pname), (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(params)))
    681 }
    682 
    683 func GetIntegeri_v(target uint32, index uint32, data *int32) {
    684 	C.glowGetIntegeri_v(gpGetIntegeri_v, (C.GLenum)(target), (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(data)))
    685 }
    686 func GetIntegerui64i_vNV(value uint32, index uint32, result *uint64) {
    687 	C.glowGetIntegerui64i_vNV(gpGetIntegerui64i_vNV, (C.GLenum)(value), (C.GLuint)(index), (*C.GLuint64EXT)(unsafe.Pointer(result)))
    688 }
    689 func GetIntegerv(pname uint32, data *int32) {
    690 	C.glowGetIntegerv(gpGetIntegerv, (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(data)))
    691 }
    692 
    693 func GetPointeri_vEXT(pname uint32, index uint32, params *unsafe.Pointer) {
    694 	C.glowGetPointeri_vEXT(gpGetPointeri_vEXT, (C.GLenum)(pname), (C.GLuint)(index), params)
    695 }
    696 
    697 func GetProgramInfoLog(program uint32, bufSize int32, length *int32, infoLog *uint8) {
    698 	C.glowGetProgramInfoLog(gpGetProgramInfoLog, (C.GLuint)(program), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(infoLog)))
    699 }
    700 
    701 func GetProgramiv(program uint32, pname uint32, params *int32) {
    702 	C.glowGetProgramiv(gpGetProgramiv, (C.GLuint)(program), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
    703 }
    704 
    705 func GetShaderInfoLog(shader uint32, bufSize int32, length *int32, infoLog *uint8) {
    706 	C.glowGetShaderInfoLog(gpGetShaderInfoLog, (C.GLuint)(shader), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(infoLog)))
    707 }
    708 
    709 func GetShaderiv(shader uint32, pname uint32, params *int32) {
    710 	C.glowGetShaderiv(gpGetShaderiv, (C.GLuint)(shader), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
    711 }
    712 
    713 func GetTransformFeedbacki64_v(xfb uint32, pname uint32, index uint32, param *int64) {
    714 	C.glowGetTransformFeedbacki64_v(gpGetTransformFeedbacki64_v, (C.GLuint)(xfb), (C.GLenum)(pname), (C.GLuint)(index), (*C.GLint64)(unsafe.Pointer(param)))
    715 }
    716 func GetTransformFeedbacki_v(xfb uint32, pname uint32, index uint32, param *int32) {
    717 	C.glowGetTransformFeedbacki_v(gpGetTransformFeedbacki_v, (C.GLuint)(xfb), (C.GLenum)(pname), (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(param)))
    718 }
    719 
    720 func GetUniformLocation(program uint32, name *uint8) int32 {
    721 	ret := C.glowGetUniformLocation(gpGetUniformLocation, (C.GLuint)(program), (*C.GLchar)(unsafe.Pointer(name)))
    722 	return (int32)(ret)
    723 }
    724 
    725 func GetUnsignedBytei_vEXT(target uint32, index uint32, data *uint8) {
    726 	C.glowGetUnsignedBytei_vEXT(gpGetUnsignedBytei_vEXT, (C.GLenum)(target), (C.GLuint)(index), (*C.GLubyte)(unsafe.Pointer(data)))
    727 }
    728 func GetVertexArrayIntegeri_vEXT(vaobj uint32, index uint32, pname uint32, param *int32) {
    729 	C.glowGetVertexArrayIntegeri_vEXT(gpGetVertexArrayIntegeri_vEXT, (C.GLuint)(vaobj), (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
    730 }
    731 func GetVertexArrayPointeri_vEXT(vaobj uint32, index uint32, pname uint32, param *unsafe.Pointer) {
    732 	C.glowGetVertexArrayPointeri_vEXT(gpGetVertexArrayPointeri_vEXT, (C.GLuint)(vaobj), (C.GLuint)(index), (C.GLenum)(pname), param)
    733 }
    734 
    735 func IsFramebufferEXT(framebuffer uint32) bool {
    736 	ret := C.glowIsFramebufferEXT(gpIsFramebufferEXT, (C.GLuint)(framebuffer))
    737 	return ret == TRUE
    738 }
    739 
    740 func IsProgram(program uint32) bool {
    741 	ret := C.glowIsProgram(gpIsProgram, (C.GLuint)(program))
    742 	return ret == TRUE
    743 }
    744 
    745 func IsRenderbufferEXT(renderbuffer uint32) bool {
    746 	ret := C.glowIsRenderbufferEXT(gpIsRenderbufferEXT, (C.GLuint)(renderbuffer))
    747 	return ret == TRUE
    748 }
    749 
    750 func IsTexture(texture uint32) bool {
    751 	ret := C.glowIsTexture(gpIsTexture, (C.GLuint)(texture))
    752 	return ret == TRUE
    753 }
    754 
    755 func LinkProgram(program uint32) {
    756 	C.glowLinkProgram(gpLinkProgram, (C.GLuint)(program))
    757 }
    758 
    759 func PixelStorei(pname uint32, param int32) {
    760 	C.glowPixelStorei(gpPixelStorei, (C.GLenum)(pname), (C.GLint)(param))
    761 }
    762 
    763 func ReadPixels(x int32, y int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
    764 	C.glowReadPixels(gpReadPixels, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
    765 }
    766 
    767 func RenderbufferStorageEXT(target uint32, internalformat uint32, width int32, height int32) {
    768 	C.glowRenderbufferStorageEXT(gpRenderbufferStorageEXT, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
    769 }
    770 
    771 func Scissor(x int32, y int32, width int32, height int32) {
    772 	C.glowScissor(gpScissor, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
    773 }
    774 
    775 func ShaderSource(shader uint32, count int32, xstring **uint8, length *int32) {
    776 	C.glowShaderSource(gpShaderSource, (C.GLuint)(shader), (C.GLsizei)(count), (**C.GLchar)(unsafe.Pointer(xstring)), (*C.GLint)(unsafe.Pointer(length)))
    777 }
    778 
    779 func StencilFunc(xfunc uint32, ref int32, mask uint32) {
    780 	C.glowStencilFunc(gpStencilFunc, (C.GLenum)(xfunc), (C.GLint)(ref), (C.GLuint)(mask))
    781 }
    782 
    783 func StencilOp(fail uint32, zfail uint32, zpass uint32) {
    784 	C.glowStencilOp(gpStencilOp, (C.GLenum)(fail), (C.GLenum)(zfail), (C.GLenum)(zpass))
    785 }
    786 
    787 func TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
    788 	C.glowTexImage2D(gpTexImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
    789 }
    790 
    791 func TexParameteri(target uint32, pname uint32, param int32) {
    792 	C.glowTexParameteri(gpTexParameteri, (C.GLenum)(target), (C.GLenum)(pname), (C.GLint)(param))
    793 }
    794 
    795 func TexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
    796 	C.glowTexSubImage2D(gpTexSubImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
    797 }
    798 
    799 func Uniform1f(location int32, v0 float32) {
    800 	C.glowUniform1f(gpUniform1f, (C.GLint)(location), (C.GLfloat)(v0))
    801 }
    802 
    803 func Uniform1i(location int32, v0 int32) {
    804 	C.glowUniform1i(gpUniform1i, (C.GLint)(location), (C.GLint)(v0))
    805 }
    806 
    807 func Uniform1fv(location int32, count int32, value *float32) {
    808 	C.glowUniform1fv(gpUniform1fv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
    809 }
    810 
    811 func Uniform2fv(location int32, count int32, value *float32) {
    812 	C.glowUniform2fv(gpUniform2fv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
    813 }
    814 
    815 func Uniform3fv(location int32, count int32, value *float32) {
    816 	C.glowUniform3fv(gpUniform3fv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
    817 }
    818 
    819 func Uniform4fv(location int32, count int32, value *float32) {
    820 	C.glowUniform4fv(gpUniform4fv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
    821 }
    822 
    823 func UniformMatrix2fv(location int32, count int32, transpose bool, value *float32) {
    824 	C.glowUniformMatrix2fv(gpUniformMatrix2fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
    825 }
    826 
    827 func UniformMatrix3fv(location int32, count int32, transpose bool, value *float32) {
    828 	C.glowUniformMatrix3fv(gpUniformMatrix3fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
    829 }
    830 
    831 func UniformMatrix4fv(location int32, count int32, transpose bool, value *float32) {
    832 	C.glowUniformMatrix4fv(gpUniformMatrix4fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
    833 }
    834 
    835 func UseProgram(program uint32) {
    836 	C.glowUseProgram(gpUseProgram, (C.GLuint)(program))
    837 }
    838 
    839 func VertexAttribPointer(index uint32, size int32, xtype uint32, normalized bool, stride int32, pointer uintptr) {
    840 	C.glowVertexAttribPointer(gpVertexAttribPointer, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLsizei)(stride), C.uintptr_t(pointer))
    841 }
    842 
    843 func Viewport(x int32, y int32, width int32, height int32) {
    844 	C.glowViewport(gpViewport, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
    845 }
    846 
    847 // InitWithProcAddrFunc intializes the package using the specified OpenGL
    848 // function pointer loading function.
    849 //
    850 // For more cases Init should be used.
    851 func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
    852 	gpActiveTexture = (C.GPACTIVETEXTURE)(getProcAddr("glActiveTexture"))
    853 	if gpActiveTexture == nil {
    854 		return errors.New("glActiveTexture")
    855 	}
    856 	gpAttachShader = (C.GPATTACHSHADER)(getProcAddr("glAttachShader"))
    857 	if gpAttachShader == nil {
    858 		return errors.New("glAttachShader")
    859 	}
    860 	gpBindAttribLocation = (C.GPBINDATTRIBLOCATION)(getProcAddr("glBindAttribLocation"))
    861 	if gpBindAttribLocation == nil {
    862 		return errors.New("glBindAttribLocation")
    863 	}
    864 	gpBindBuffer = (C.GPBINDBUFFER)(getProcAddr("glBindBuffer"))
    865 	if gpBindBuffer == nil {
    866 		return errors.New("glBindBuffer")
    867 	}
    868 	gpBindFramebufferEXT = (C.GPBINDFRAMEBUFFEREXT)(getProcAddr("glBindFramebufferEXT"))
    869 	gpBindRenderbufferEXT = (C.GPBINDRENDERBUFFEREXT)(getProcAddr("glBindRenderbufferEXT"))
    870 	gpBindTexture = (C.GPBINDTEXTURE)(getProcAddr("glBindTexture"))
    871 	if gpBindTexture == nil {
    872 		return errors.New("glBindTexture")
    873 	}
    874 	gpBlendFunc = (C.GPBLENDFUNC)(getProcAddr("glBlendFunc"))
    875 	if gpBlendFunc == nil {
    876 		return errors.New("glBlendFunc")
    877 	}
    878 	gpBufferData = (C.GPBUFFERDATA)(getProcAddr("glBufferData"))
    879 	if gpBufferData == nil {
    880 		return errors.New("glBufferData")
    881 	}
    882 	gpBufferSubData = (C.GPBUFFERSUBDATA)(getProcAddr("glBufferSubData"))
    883 	if gpBufferSubData == nil {
    884 		return errors.New("glBufferSubData")
    885 	}
    886 	gpCheckFramebufferStatusEXT = (C.GPCHECKFRAMEBUFFERSTATUSEXT)(getProcAddr("glCheckFramebufferStatusEXT"))
    887 	gpClear = (C.GPCLEAR)(getProcAddr("glClear"))
    888 	if gpClear == nil {
    889 		return errors.New("glClear")
    890 	}
    891 	gpColorMask = (C.GPCOLORMASK)(getProcAddr("glColorMask"))
    892 	if gpColorMask == nil {
    893 		return errors.New("glColorMask")
    894 	}
    895 	gpCompileShader = (C.GPCOMPILESHADER)(getProcAddr("glCompileShader"))
    896 	if gpCompileShader == nil {
    897 		return errors.New("glCompileShader")
    898 	}
    899 	gpCreateProgram = (C.GPCREATEPROGRAM)(getProcAddr("glCreateProgram"))
    900 	if gpCreateProgram == nil {
    901 		return errors.New("glCreateProgram")
    902 	}
    903 	gpCreateShader = (C.GPCREATESHADER)(getProcAddr("glCreateShader"))
    904 	if gpCreateShader == nil {
    905 		return errors.New("glCreateShader")
    906 	}
    907 	gpDeleteBuffers = (C.GPDELETEBUFFERS)(getProcAddr("glDeleteBuffers"))
    908 	if gpDeleteBuffers == nil {
    909 		return errors.New("glDeleteBuffers")
    910 	}
    911 	gpDeleteFramebuffersEXT = (C.GPDELETEFRAMEBUFFERSEXT)(getProcAddr("glDeleteFramebuffersEXT"))
    912 	gpDeleteProgram = (C.GPDELETEPROGRAM)(getProcAddr("glDeleteProgram"))
    913 	if gpDeleteProgram == nil {
    914 		return errors.New("glDeleteProgram")
    915 	}
    916 	gpDeleteRenderbuffersEXT = (C.GPDELETERENDERBUFFERSEXT)(getProcAddr("glDeleteRenderbuffersEXT"))
    917 	gpDeleteShader = (C.GPDELETESHADER)(getProcAddr("glDeleteShader"))
    918 	if gpDeleteShader == nil {
    919 		return errors.New("glDeleteShader")
    920 	}
    921 	gpDeleteTextures = (C.GPDELETETEXTURES)(getProcAddr("glDeleteTextures"))
    922 	if gpDeleteTextures == nil {
    923 		return errors.New("glDeleteTextures")
    924 	}
    925 	gpDisable = (C.GPDISABLE)(getProcAddr("glDisable"))
    926 	if gpDisable == nil {
    927 		return errors.New("glDisable")
    928 	}
    929 	gpDisableVertexAttribArray = (C.GPDISABLEVERTEXATTRIBARRAY)(getProcAddr("glDisableVertexAttribArray"))
    930 	if gpDisableVertexAttribArray == nil {
    931 		return errors.New("glDisableVertexAttribArray")
    932 	}
    933 	gpDrawElements = (C.GPDRAWELEMENTS)(getProcAddr("glDrawElements"))
    934 	if gpDrawElements == nil {
    935 		return errors.New("glDrawElements")
    936 	}
    937 	gpEnable = (C.GPENABLE)(getProcAddr("glEnable"))
    938 	if gpEnable == nil {
    939 		return errors.New("glEnable")
    940 	}
    941 	gpEnableVertexAttribArray = (C.GPENABLEVERTEXATTRIBARRAY)(getProcAddr("glEnableVertexAttribArray"))
    942 	if gpEnableVertexAttribArray == nil {
    943 		return errors.New("glEnableVertexAttribArray")
    944 	}
    945 	gpFlush = (C.GPFLUSH)(getProcAddr("glFlush"))
    946 	if gpFlush == nil {
    947 		return errors.New("glFlush")
    948 	}
    949 	gpFramebufferRenderbufferEXT = (C.GPFRAMEBUFFERRENDERBUFFEREXT)(getProcAddr("glFramebufferRenderbufferEXT"))
    950 	gpFramebufferTexture2DEXT = (C.GPFRAMEBUFFERTEXTURE2DEXT)(getProcAddr("glFramebufferTexture2DEXT"))
    951 	gpGenBuffers = (C.GPGENBUFFERS)(getProcAddr("glGenBuffers"))
    952 	if gpGenBuffers == nil {
    953 		return errors.New("glGenBuffers")
    954 	}
    955 	gpGenFramebuffersEXT = (C.GPGENFRAMEBUFFERSEXT)(getProcAddr("glGenFramebuffersEXT"))
    956 	gpGenRenderbuffersEXT = (C.GPGENRENDERBUFFERSEXT)(getProcAddr("glGenRenderbuffersEXT"))
    957 	gpGenTextures = (C.GPGENTEXTURES)(getProcAddr("glGenTextures"))
    958 	if gpGenTextures == nil {
    959 		return errors.New("glGenTextures")
    960 	}
    961 	gpGetBufferSubData = (C.GPGETBUFFERSUBDATA)(getProcAddr("glGetBufferSubData"))
    962 	if gpGetBufferSubData == nil {
    963 		return errors.New("glGetBufferSubData")
    964 	}
    965 	gpGetDoublei_v = (C.GPGETDOUBLEI_V)(getProcAddr("glGetDoublei_v"))
    966 	gpGetDoublei_vEXT = (C.GPGETDOUBLEI_VEXT)(getProcAddr("glGetDoublei_vEXT"))
    967 	gpGetError = (C.GPGETERROR)(getProcAddr("glGetError"))
    968 	if gpGetError == nil {
    969 		return errors.New("glGetError")
    970 	}
    971 	gpGetFloati_v = (C.GPGETFLOATI_V)(getProcAddr("glGetFloati_v"))
    972 	gpGetFloati_vEXT = (C.GPGETFLOATI_VEXT)(getProcAddr("glGetFloati_vEXT"))
    973 	gpGetIntegeri_v = (C.GPGETINTEGERI_V)(getProcAddr("glGetIntegeri_v"))
    974 	gpGetIntegerui64i_vNV = (C.GPGETINTEGERUI64I_VNV)(getProcAddr("glGetIntegerui64i_vNV"))
    975 	gpGetIntegerv = (C.GPGETINTEGERV)(getProcAddr("glGetIntegerv"))
    976 	if gpGetIntegerv == nil {
    977 		return errors.New("glGetIntegerv")
    978 	}
    979 	gpGetPointeri_vEXT = (C.GPGETPOINTERI_VEXT)(getProcAddr("glGetPointeri_vEXT"))
    980 	gpGetProgramInfoLog = (C.GPGETPROGRAMINFOLOG)(getProcAddr("glGetProgramInfoLog"))
    981 	if gpGetProgramInfoLog == nil {
    982 		return errors.New("glGetProgramInfoLog")
    983 	}
    984 	gpGetProgramiv = (C.GPGETPROGRAMIV)(getProcAddr("glGetProgramiv"))
    985 	if gpGetProgramiv == nil {
    986 		return errors.New("glGetProgramiv")
    987 	}
    988 	gpGetShaderInfoLog = (C.GPGETSHADERINFOLOG)(getProcAddr("glGetShaderInfoLog"))
    989 	if gpGetShaderInfoLog == nil {
    990 		return errors.New("glGetShaderInfoLog")
    991 	}
    992 	gpGetShaderiv = (C.GPGETSHADERIV)(getProcAddr("glGetShaderiv"))
    993 	if gpGetShaderiv == nil {
    994 		return errors.New("glGetShaderiv")
    995 	}
    996 	gpGetTransformFeedbacki64_v = (C.GPGETTRANSFORMFEEDBACKI64_V)(getProcAddr("glGetTransformFeedbacki64_v"))
    997 	gpGetTransformFeedbacki_v = (C.GPGETTRANSFORMFEEDBACKI_V)(getProcAddr("glGetTransformFeedbacki_v"))
    998 	gpGetUniformLocation = (C.GPGETUNIFORMLOCATION)(getProcAddr("glGetUniformLocation"))
    999 	if gpGetUniformLocation == nil {
   1000 		return errors.New("glGetUniformLocation")
   1001 	}
   1002 	gpGetUnsignedBytei_vEXT = (C.GPGETUNSIGNEDBYTEI_VEXT)(getProcAddr("glGetUnsignedBytei_vEXT"))
   1003 	gpGetVertexArrayIntegeri_vEXT = (C.GPGETVERTEXARRAYINTEGERI_VEXT)(getProcAddr("glGetVertexArrayIntegeri_vEXT"))
   1004 	gpGetVertexArrayPointeri_vEXT = (C.GPGETVERTEXARRAYPOINTERI_VEXT)(getProcAddr("glGetVertexArrayPointeri_vEXT"))
   1005 	gpIsFramebufferEXT = (C.GPISFRAMEBUFFEREXT)(getProcAddr("glIsFramebufferEXT"))
   1006 	gpIsProgram = (C.GPISPROGRAM)(getProcAddr("glIsProgram"))
   1007 	if gpIsProgram == nil {
   1008 		return errors.New("glIsProgram")
   1009 	}
   1010 	gpIsRenderbufferEXT = (C.GPISRENDERBUFFEREXT)(getProcAddr("glIsRenderbufferEXT"))
   1011 	gpIsTexture = (C.GPISTEXTURE)(getProcAddr("glIsTexture"))
   1012 	if gpIsTexture == nil {
   1013 		return errors.New("glIsTexture")
   1014 	}
   1015 	gpLinkProgram = (C.GPLINKPROGRAM)(getProcAddr("glLinkProgram"))
   1016 	if gpLinkProgram == nil {
   1017 		return errors.New("glLinkProgram")
   1018 	}
   1019 	gpPixelStorei = (C.GPPIXELSTOREI)(getProcAddr("glPixelStorei"))
   1020 	if gpPixelStorei == nil {
   1021 		return errors.New("glPixelStorei")
   1022 	}
   1023 	gpReadPixels = (C.GPREADPIXELS)(getProcAddr("glReadPixels"))
   1024 	if gpReadPixels == nil {
   1025 		return errors.New("glReadPixels")
   1026 	}
   1027 	gpRenderbufferStorageEXT = (C.GPRENDERBUFFERSTORAGEEXT)(getProcAddr("glRenderbufferStorageEXT"))
   1028 	gpScissor = (C.GPSCISSOR)(getProcAddr("glScissor"))
   1029 	if gpScissor == nil {
   1030 		return errors.New("glScissor")
   1031 	}
   1032 	gpShaderSource = (C.GPSHADERSOURCE)(getProcAddr("glShaderSource"))
   1033 	if gpShaderSource == nil {
   1034 		return errors.New("glShaderSource")
   1035 	}
   1036 	gpStencilFunc = (C.GPSTENCILFUNC)(getProcAddr("glStencilFunc"))
   1037 	if gpStencilFunc == nil {
   1038 		return errors.New("glStencilFunc")
   1039 	}
   1040 	gpStencilOp = (C.GPSTENCILOP)(getProcAddr("glStencilOp"))
   1041 	if gpStencilOp == nil {
   1042 		return errors.New("glStencilOp")
   1043 	}
   1044 	gpTexImage2D = (C.GPTEXIMAGE2D)(getProcAddr("glTexImage2D"))
   1045 	if gpTexImage2D == nil {
   1046 		return errors.New("glTexImage2D")
   1047 	}
   1048 	gpTexParameteri = (C.GPTEXPARAMETERI)(getProcAddr("glTexParameteri"))
   1049 	if gpTexParameteri == nil {
   1050 		return errors.New("glTexParameteri")
   1051 	}
   1052 	gpTexSubImage2D = (C.GPTEXSUBIMAGE2D)(getProcAddr("glTexSubImage2D"))
   1053 	if gpTexSubImage2D == nil {
   1054 		return errors.New("glTexSubImage2D")
   1055 	}
   1056 	gpUniform1f = (C.GPUNIFORM1F)(getProcAddr("glUniform1f"))
   1057 	if gpUniform1f == nil {
   1058 		return errors.New("glUniform1f")
   1059 	}
   1060 	gpUniform1i = (C.GPUNIFORM1I)(getProcAddr("glUniform1i"))
   1061 	if gpUniform1i == nil {
   1062 		return errors.New("glUniform1i")
   1063 	}
   1064 	gpUniform1fv = (C.GPUNIFORM1FV)(getProcAddr("glUniform1fv"))
   1065 	if gpUniform1fv == nil {
   1066 		return errors.New("glUniform1fv")
   1067 	}
   1068 	gpUniform2fv = (C.GPUNIFORM2FV)(getProcAddr("glUniform2fv"))
   1069 	if gpUniform2fv == nil {
   1070 		return errors.New("glUniform2fv")
   1071 	}
   1072 	gpUniform3fv = (C.GPUNIFORM3FV)(getProcAddr("glUniform3fv"))
   1073 	if gpUniform3fv == nil {
   1074 		return errors.New("glUniform3fv")
   1075 	}
   1076 	gpUniform4fv = (C.GPUNIFORM4FV)(getProcAddr("glUniform4fv"))
   1077 	if gpUniform4fv == nil {
   1078 		return errors.New("glUniform4fv")
   1079 	}
   1080 	gpUniformMatrix2fv = (C.GPUNIFORMMATRIX2FV)(getProcAddr("glUniformMatrix2fv"))
   1081 	if gpUniformMatrix2fv == nil {
   1082 		return errors.New("glUniformMatrix2fv")
   1083 	}
   1084 	gpUniformMatrix3fv = (C.GPUNIFORMMATRIX3FV)(getProcAddr("glUniformMatrix3fv"))
   1085 	if gpUniformMatrix3fv == nil {
   1086 		return errors.New("glUniformMatrix3fv")
   1087 	}
   1088 	gpUniformMatrix4fv = (C.GPUNIFORMMATRIX4FV)(getProcAddr("glUniformMatrix4fv"))
   1089 	if gpUniformMatrix4fv == nil {
   1090 		return errors.New("glUniformMatrix4fv")
   1091 	}
   1092 	gpUseProgram = (C.GPUSEPROGRAM)(getProcAddr("glUseProgram"))
   1093 	if gpUseProgram == nil {
   1094 		return errors.New("glUseProgram")
   1095 	}
   1096 	gpVertexAttribPointer = (C.GPVERTEXATTRIBPOINTER)(getProcAddr("glVertexAttribPointer"))
   1097 	if gpVertexAttribPointer == nil {
   1098 		return errors.New("glVertexAttribPointer")
   1099 	}
   1100 	gpViewport = (C.GPVIEWPORT)(getProcAddr("glViewport"))
   1101 	if gpViewport == nil {
   1102 		return errors.New("glViewport")
   1103 	}
   1104 	return nil
   1105 }