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