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 }