1 module skia.GRGlInterface; 2 3 import skia.DelegateProxies; 4 import skia.SKObject; 5 import skia.SkiaApi; 6 import skia.Definitions; 7 8 import std.experimental.logger; 9 10 11 // #if __TIZEN__ 12 // using System.Reflection; 13 // #endif 14 15 class GRGlInterface : SKObject, ISKSkipObjectRegistration 16 { 17 this (void* h, bool owns) 18 { 19 super (h, owns); 20 } 21 22 protected override void Dispose (bool disposing) 23 { 24 return super.Dispose (disposing); 25 26 } 27 28 // Create* (defaults) 29 30 static GRGlInterface Create () 31 { 32 return CreateGl () ? CreateGl () : CreateAngle (); 33 } 34 35 36 private static GRGlInterface CreateGl () 37 { 38 // the native code will automatically return null on non-OpenGL platforms, such as UWP 39 return GetObject (SkiaApi.gr_glinterface_create_native_interface ()); 40 } 41 42 static GRGlInterface CreateAngle () 43 { 44 // if (PlatformConfiguration.IsWindows) 45 // { 46 // return CreateAngle (AngleLoader.GetProc); 47 // } else { 48 // // return null on non-DirectX platforms: everything except Windows 49 // return null; 50 // } 51 return null; 52 } 53 54 // Create* (assemble) 55 56 static GRGlInterface Create (GRGlGetProcedureAddressDelegate get) 57 { 58 GRGlGetProcedureAddressDelegateWrapper wrapper = GRGlGetProcedureAddressDelegateWrapper(get); 59 60 void* ctx = cast(void*)&wrapper; 61 GRGlGetProcProxyDelegate releaseProxy = DelegateProxies.GRGlGetProcDelegateProxy; 62 GRGlGetProcProxyDelegate proxy = DelegateProxies.Create (releaseProxy, ctx); 63 64 try { 65 return GetObject (SkiaApi.gr_glinterface_assemble_interface (cast(void*)ctx, proxy)); 66 } finally { 67 68 // gch.Free (); 69 } 70 } 71 72 static GRGlInterface CreateAngle (GRGlGetProcedureAddressDelegate get) 73 { 74 return CreateGles (get); // ANGLE is just a GLES v2 over DX v9+ 75 } 76 77 78 static GRGlInterface CreateOpenGl (GRGlGetProcedureAddressDelegate get) 79 { 80 GRGlGetProcedureAddressDelegateWrapper wrapper = GRGlGetProcedureAddressDelegateWrapper(get); 81 82 void* ctx = cast(void*)&wrapper; 83 GRGlGetProcProxyDelegate releaseProxy = DelegateProxies.GRGlGetProcDelegateProxy; 84 GRGlGetProcProxyDelegate proxy = DelegateProxies.Create (releaseProxy, ctx); 85 try { 86 return GetObject (SkiaApi.gr_glinterface_assemble_gl_interface (cast(void*)ctx, proxy)); 87 } finally { 88 } 89 } 90 91 static GRGlInterface CreateGles (GRGlGetProcedureAddressDelegate get) 92 { 93 GRGlGetProcedureAddressDelegateWrapper wrapper = GRGlGetProcedureAddressDelegateWrapper(get); 94 95 void* ctx = cast(void*)&wrapper; 96 GRGlGetProcProxyDelegate releaseProxy = DelegateProxies.GRGlGetProcDelegateProxy; 97 GRGlGetProcProxyDelegate proxy = DelegateProxies.Create (releaseProxy, ctx); 98 99 try { 100 return GetObject (SkiaApi.gr_glinterface_assemble_gles_interface (cast(void*)ctx, proxy)); 101 } finally { 102 } 103 } 104 105 static GRGlInterface CreateWebGl (GRGlGetProcedureAddressDelegate get) 106 { 107 GRGlGetProcedureAddressDelegateWrapper wrapper = GRGlGetProcedureAddressDelegateWrapper(get); 108 109 void* ctx = cast(void*)&wrapper; 110 GRGlGetProcProxyDelegate releaseProxy = DelegateProxies.GRGlGetProcDelegateProxy; 111 GRGlGetProcProxyDelegate proxy = DelegateProxies.Create (releaseProxy, ctx); 112 113 try { 114 return GetObject (SkiaApi.gr_glinterface_assemble_webgl_interface (cast(void*)ctx, proxy)); 115 } finally { 116 } 117 } 118 119 static GRGlInterface CreateEvas (void* evas) 120 { 121 return null; 122 // #if __TIZEN__ 123 // auto evasLoader = new EvasGlLoader (evas); 124 // return CreateGles (name => evasLoader.GetFunctionPointer (name)); 125 // #else 126 // return null; 127 // #endif 128 } 129 130 // OBSOLETE CREATION 131 132 static GRGlInterface CreateDefaultInterface (){ 133 return Create (); 134 } 135 136 137 static GRGlInterface CreateNativeGlInterface () { 138 return CreateGl (); 139 } 140 141 static GRGlInterface CreateNativeAngleInterface () { 142 return CreateAngle (); 143 } 144 145 static GRGlInterface CreateNativeEvasInterface (void* evas) { 146 return CreateEvas (evas); 147 } 148 149 static GRGlInterface AssembleInterface (GRGlGetProcDelegate get) { 150 return Create ((name){ return get(null, name);}); 151 } 152 153 static GRGlInterface AssembleInterface (void* context, GRGlGetProcDelegate get) { 154 return Create ((name){return get(context, name);}); 155 } 156 157 static GRGlInterface AssembleAngleInterface (GRGlGetProcDelegate get) { 158 return CreateAngle ((name){ return get(null, name);}); 159 } 160 161 static GRGlInterface AssembleAngleInterface (void* context, GRGlGetProcDelegate get) { 162 return CreateAngle ((name){return get(context, name);}); 163 } 164 165 static GRGlInterface AssembleGlInterface (GRGlGetProcDelegate get) { 166 return CreateOpenGl ((name) {return get(null, name);}); 167 } 168 169 static GRGlInterface AssembleGlInterface (void* context, GRGlGetProcDelegate get) { 170 return CreateOpenGl ((name){return get(context, name);}); 171 } 172 173 static GRGlInterface AssembleGlesInterface (GRGlGetProcDelegate get) { 174 return CreateGles ((name){return get(null, name);}); 175 } 176 177 static GRGlInterface AssembleGlesInterface (void* context, GRGlGetProcDelegate get) { 178 return CreateGles ((name){return get(context, name);}); 179 } 180 181 // 182 183 bool Validate () { 184 return SkiaApi.gr_glinterface_validate (cast(gr_glinterface_t*)Handle); 185 } 186 187 bool HasExtension (string extension) { 188 return SkiaApi.gr_glinterface_has_extension (cast(gr_glinterface_t*)Handle, extension); 189 } 190 191 // 192 193 static GRGlInterface GetObject (void* handle) 194 { 195 return handle is null ? null : new GRGlInterface (handle, true); 196 } 197 198 199 // 200 201 private static class AngleLoader 202 { 203 private static const void* libEGL; 204 private static const void* libGLESv2; 205 206 // #if WINDOWS_UWP 207 // // https://msdn.microsoft.com/en-us/library/windows/desktop/mt186421(v=vs.85).aspx 208 // private static extern void* LoadPackagedLibrary ([MarshalAs (UnmanagedType.LPWStr)] string lpFileName, uint Reserved); 209 // private static extern void* GetProcAddress (void* hModule, [MarshalAs (UnmanagedType.LPStr)] string lpProcName); 210 211 // private static void* LoadLibrary (string lpFileName) => LoadPackagedLibrary(lpFileName, 0); 212 // #else 213 // private static extern void* LoadLibrary ([MarshalAs (UnmanagedType.LPStr)] string lpFileName); 214 // private static extern void* GetProcAddress (void* hModule, [MarshalAs (UnmanagedType.LPStr)] string lpProcName); 215 // #endif 216 // private static extern void* eglGetProcAddress ([MarshalAs (UnmanagedType.LPStr)] string procname); 217 218 // static AngleLoader() 219 // { 220 // // this is not supported at all on non-Windows platforms 221 // if (!PlatformConfiguration.IsWindows) { 222 // return; 223 // } 224 225 // libEGL = LoadLibrary ("libEGL.dll"); 226 // libGLESv2 = LoadLibrary ("libGLESv2.dll"); 227 // } 228 229 static bool IsValid() 230 { 231 return libEGL !is null && libGLESv2 !is null; 232 233 } 234 235 // function to assemble the ANGLE interface 236 static void* GetProc (string name) 237 { 238 // // this is not supported at all on non-Windows platforms 239 // if (!PlatformConfiguration.IsWindows) { 240 // return null; 241 // } 242 243 // if (!IsValid) 244 // return null; 245 246 // void* proc = GetProcAddress (libGLESv2, name); 247 // if (proc is null) 248 // { 249 // proc = GetProcAddress (libEGL, name); 250 // } 251 // if (proc is null) 252 // { 253 // proc = eglGetProcAddress (name); 254 // } 255 // return proc; 256 return null; 257 } 258 } 259 260 // #if __TIZEN__ 261 // private class EvasGlLoader 262 // { 263 // private const string libevas = "libevas.so.1"; 264 265 // private static const Type IntPtrType; 266 // private static const Type EvasGlApiType; 267 // private static const FieldInfo[] apiFields; 268 269 // private const void* glEvas; 270 // private const EvasGlApi api; 271 // static extern void* evas_gl_api_get (void* evas_gl); 272 // static extern void* evas_gl_context_api_get (void* evas_gl, void* ctx); 273 // static extern void* evas_gl_current_context_get (void* evas_gl); 274 // static extern void* evas_gl_proc_address_get (void* evas_gl, string name); 275 276 // static EvasGlLoader () 277 // { 278 // IntPtrType = typeof (void*); 279 // EvasGlApiType = typeof (EvasGlApi); 280 // apiFields = EvasGlApiType.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); 281 // } 282 283 // EvasGlLoader (void* evas) 284 // { 285 // glEvas = evas; 286 // auto glContext = evas_gl_current_context_get (glEvas); 287 288 // auto apiPtr = glContext !is null 289 // ? evas_gl_context_api_get (glEvas, glContext) 290 // : evas_gl_api_get (glEvas); 291 292 // api = Marshal.PtrToStructure<EvasGlApi> (apiPtr); 293 // } 294 295 // void* GetFunctionPointer (string name) 296 // { 297 // // try evas_gl_proc_address_get 298 // auto address = evas_gl_proc_address_get (glEvas, name); 299 // if (address !is null) 300 // return address; 301 302 // // try the API struct 303 // for (var i = 0; i < apiFields.Length; i++) { 304 // auto field = apiFields[i]; 305 // if (field.Name == name && field.FieldType == IntPtrType) 306 // return (void*)field.GetValue (api); 307 // } 308 309 // return null; 310 // } 311 // } 312 313 // // this structure is initialized from a native pointer 314 // private struct EvasGlApi 315 // { 316 // // DO NOT change the order, needs to be as specified in struct _Evas_GL_API (/platform/upstream/efl/src/lib/evas/Evas_GL.h) 317 // // DO NOT change the names, they need to match the OpenGL API 318 // #pragma warning disable 0169 319 // private int version; 320 // private void* glActiveTexture; 321 // private void* glAttachShader; 322 // private void* glBindAttribLocation; 323 // private void* glBindBuffer; 324 // private void* glBindFramebuffer; 325 // private void* glBindRenderbuffer; 326 // private void* glBindTexture; 327 // private void* glBlendColor; 328 // private void* glBlendEquation; 329 // private void* glBlendEquationSeparate; 330 // private void* glBlendFunc; 331 // private void* glBlendFuncSeparate; 332 // private void* glBufferData; 333 // private void* glBufferSubData; 334 // private void* glCheckFramebufferStatus; 335 // private void* glClear; 336 // private void* glClearColor; 337 // private void* glClearDepthf; 338 // private void* glClearStencil; 339 // private void* glColorMask; 340 // private void* glCompileShader; 341 // private void* glCompressedTexImage2D; 342 // private void* glCompressedTexSubImage2D; 343 // private void* glCopyTexImage2D; 344 // private void* glCopyTexSubImage2D; 345 // private void* glCreateProgram; 346 // private void* glCreateShader; 347 // private void* glCullFace; 348 // private void* glDeleteBuffers; 349 // private void* glDeleteFramebuffers; 350 // private void* glDeleteProgram; 351 // private void* glDeleteRenderbuffers; 352 // private void* glDeleteShader; 353 // private void* glDeleteTextures; 354 // private void* glDepthFunc; 355 // private void* glDepthMask; 356 // private void* glDepthRangef; 357 // private void* glDetachShader; 358 // private void* glDisable; 359 // private void* glDisableVertexAttribArray; 360 // private void* glDrawArrays; 361 // private void* glDrawElements; 362 // private void* glEnable; 363 // private void* glEnableVertexAttribArray; 364 // private void* glFinish; 365 // private void* glFlush; 366 // private void* glFramebufferRenderbuffer; 367 // private void* glFramebufferTexture2D; 368 // private void* glFrontFace; 369 // private void* glGenBuffers; 370 // private void* glGenerateMipmap; 371 // private void* glGenFramebuffers; 372 // private void* glGenRenderbuffers; 373 // private void* glGenTextures; 374 // private void* glGetActiveAttrib; 375 // private void* glGetActiveUniform; 376 // private void* glGetAttachedShaders; 377 // private void* glGetAttribLocation; 378 // private void* glGetBooleanv; 379 // private void* glGetBufferParameteriv; 380 // private void* glGetError; 381 // private void* glGetFloatv; 382 // private void* glGetFramebufferAttachmentParameteriv; 383 // private void* glGetIntegerv; 384 // private void* glGetProgramiv; 385 // private void* glGetProgramInfoLog; 386 // private void* glGetRenderbufferParameteriv; 387 // private void* glGetShaderiv; 388 // private void* glGetShaderInfoLog; 389 // private void* glGetShaderPrecisionFormat; 390 // private void* glGetShaderSource; 391 // private void* glGetString; 392 // private void* glGetTexParameterfv; 393 // private void* glGetTexParameteriv; 394 // private void* glGetUniformfv; 395 // private void* glGetUniformiv; 396 // private void* glGetUniformLocation; 397 // private void* glGetVertexAttribfv; 398 // private void* glGetVertexAttribiv; 399 // private void* glGetVertexAttribPointerv; 400 // private void* glHint; 401 // private void* glIsBuffer; 402 // private void* glIsEnabled; 403 // private void* glIsFramebuffer; 404 // private void* glIsProgram; 405 // private void* glIsRenderbuffer; 406 // private void* glIsShader; 407 // private void* glIsTexture; 408 // private void* glLineWidth; 409 // private void* glLinkProgram; 410 // private void* glPixelStorei; 411 // private void* glPolygonOffset; 412 // private void* glReadPixels; 413 // private void* glReleaseShaderCompiler; 414 // private void* glRenderbufferStorage; 415 // private void* glSampleCoverage; 416 // private void* glScissor; 417 // private void* glShaderBinary; 418 // private void* glShaderSource; 419 // private void* glStencilFunc; 420 // private void* glStencilFuncSeparate; 421 // private void* glStencilMask; 422 // private void* glStencilMaskSeparate; 423 // private void* glStencilOp; 424 // private void* glStencilOpSeparate; 425 // private void* glTexImage2D; 426 // private void* glTexParameterf; 427 // private void* glTexParameterfv; 428 // private void* glTexParameteri; 429 // private void* glTexParameteriv; 430 // private void* glTexSubImage2D; 431 // private void* glUniform1f; 432 // private void* glUniform1fv; 433 // private void* glUniform1i; 434 // private void* glUniform1iv; 435 // private void* glUniform2f; 436 // private void* glUniform2fv; 437 // private void* glUniform2i; 438 // private void* glUniform2iv; 439 // private void* glUniform3f; 440 // private void* glUniform3fv; 441 // private void* glUniform3i; 442 // private void* glUniform3iv; 443 // private void* glUniform4f; 444 // private void* glUniform4fv; 445 // private void* glUniform4i; 446 // private void* glUniform4iv; 447 // private void* glUniformMatrix2fv; 448 // private void* glUniformMatrix3fv; 449 // private void* glUniformMatrix4fv; 450 // private void* glUseProgram; 451 // private void* glValidateProgram; 452 // private void* glVertexAttrib1f; 453 // private void* glVertexAttrib1fv; 454 // private void* glVertexAttrib2f; 455 // private void* glVertexAttrib2fv; 456 // private void* glVertexAttrib3f; 457 // private void* glVertexAttrib3fv; 458 // private void* glVertexAttrib4f; 459 // private void* glVertexAttrib4fv; 460 // private void* glVertexAttribPointer; 461 // private void* glViewport; 462 // private void* glEvasGLImageTargetTexture2DOES; 463 // private void* glEvasGLImageTargetRenderbufferStorageOES; 464 // private void* glGetProgramBinaryOES; 465 // private void* glProgramBinaryOES; 466 // private void* glMapBufferOES; 467 // private void* glUnmapBufferOES; 468 // private void* glGetBufferPointervOES; 469 // private void* glTexImage3DOES; 470 // private void* glTexSubImage3DOES; 471 // private void* glCopyTexSubImage3DOES; 472 // private void* glCompressedTexImage3DOES; 473 // private void* glCompressedTexSubImage3DOES; 474 // private void* glFramebufferTexture3DOES; 475 // private void* glGetPerfMonitorGroupsAMD; 476 // private void* glGetPerfMonitorCountersAMD; 477 // private void* glGetPerfMonitorGroupStringAMD; 478 // private void* glGetPerfMonitorCounterStringAMD; 479 // private void* glGetPerfMonitorCounterInfoAMD; 480 // private void* glGenPerfMonitorsAMD; 481 // private void* glDeletePerfMonitorsAMD; 482 // private void* glSelectPerfMonitorCountersAMD; 483 // private void* glBeginPerfMonitorAMD; 484 // private void* glEndPerfMonitorAMD; 485 // private void* glGetPerfMonitorCounterDataAMD; 486 // private void* glDiscardFramebufferEXT; 487 // private void* glMultiDrawArraysEXT; 488 // private void* glMultiDrawElementsEXT; 489 // private void* glDeleteFencesNV; 490 // private void* glGenFencesNV; 491 // private void* glIsFenceNV; 492 // private void* glTestFenceNV; 493 // private void* glGetFenceivNV; 494 // private void* glFinishFenceNV; 495 // private void* glSetFenceNV; 496 // private void* glGetDriverControlsQCOM; 497 // private void* glGetDriverControlStringQCOM; 498 // private void* glEnableDriverControlQCOM; 499 // private void* glDisableDriverControlQCOM; 500 // private void* glExtGetTexturesQCOM; 501 // private void* glExtGetBuffersQCOM; 502 // private void* glExtGetRenderbuffersQCOM; 503 // private void* glExtGetFramebuffersQCOM; 504 // private void* glExtGetTexLevelParameterivQCOM; 505 // private void* glExtTexObjectStateOverrideiQCOM; 506 // private void* glExtGetTexSubImageQCOM; 507 // private void* glExtGetBufferPointervQCOM; 508 // private void* glExtGetShadersQCOM; 509 // private void* glExtGetProgramsQCOM; 510 // private void* glExtIsProgramBinaryQCOM; 511 // private void* glExtGetProgramBinarySourceQCOM; 512 // private void* evasglCreateImage; 513 // private void* evasglDestroyImage; 514 // private void* evasglCreateImageForContext; 515 // private void* glAlphaFunc; 516 // private void* glClipPlanef; 517 // private void* glColor4f; 518 // private void* glFogf; 519 // private void* glFogfv; 520 // private void* glFrustumf; 521 // private void* glGetClipPlanef; 522 // private void* glGetLightfv; 523 // private void* glGetMaterialfv; 524 // private void* glGetTexEnvfv; 525 // private void* glLightModelf; 526 // private void* glLightModelfv; 527 // private void* glLightf; 528 // private void* glLightfv; 529 // private void* glLoadMatrixf; 530 // private void* glMaterialf; 531 // private void* glMaterialfv; 532 // private void* glMultMatrixf; 533 // private void* glMultiTexCoord4f; 534 // private void* glNormal3f; 535 // private void* glOrthof; 536 // private void* glPointParameterf; 537 // private void* glPointParameterfv; 538 // private void* glPointSize; 539 // private void* glPointSizePointerOES; 540 // private void* glRotatef; 541 // private void* glScalef; 542 // private void* glTexEnvf; 543 // private void* glTexEnvfv; 544 // private void* glTranslatef; 545 // private void* glAlphaFuncx; 546 // private void* glClearColorx; 547 // private void* glClearDepthx; 548 // private void* glClientActiveTexture; 549 // private void* glClipPlanex; 550 // private void* glColor4ub; 551 // private void* glColor4x; 552 // private void* glColorPointer; 553 // private void* glDepthRangex; 554 // private void* glDisableClientState; 555 // private void* glEnableClientState; 556 // private void* glFogx; 557 // private void* glFogxv; 558 // private void* glFrustumx; 559 // private void* glGetClipPlanex; 560 // private void* glGetFixedv; 561 // private void* glGetLightxv; 562 // private void* glGetMaterialxv; 563 // private void* glGetPointerv; 564 // private void* glGetTexEnviv; 565 // private void* glGetTexEnvxv; 566 // private void* glGetTexParameterxv; 567 // private void* glLightModelx; 568 // private void* glLightModelxv; 569 // private void* glLightx; 570 // private void* glLightxv; 571 // private void* glLineWidthx; 572 // private void* glLoadIdentity; 573 // private void* glLoadMatrixx; 574 // private void* glLogicOp; 575 // private void* glMaterialx; 576 // private void* glMaterialxv; 577 // private void* glMatrixMode; 578 // private void* glMultMatrixx; 579 // private void* glMultiTexCoord4x; 580 // private void* glNormal3x; 581 // private void* glNormalPointer; 582 // private void* glOrthox; 583 // private void* glPointParameterx; 584 // private void* glPointParameterxv; 585 // private void* glPointSizex; 586 // private void* glPolygonOffsetx; 587 // private void* glPopMatrix; 588 // private void* glPushMatrix; 589 // private void* glRotatex; 590 // private void* glSampleCoveragex; 591 // private void* glScalex; 592 // private void* glShadeModel; 593 // private void* glTexCoordPointer; 594 // private void* glTexEnvi; 595 // private void* glTexEnvx; 596 // private void* glTexEnviv; 597 // private void* glTexEnvxv; 598 // private void* glTexParameterx; 599 // private void* glTexParameterxv; 600 // private void* glTranslatex; 601 // private void* glVertexPointer; 602 // private void* glBlendEquationSeparateOES; 603 // private void* glBlendFuncSeparateOES; 604 // private void* glBlendEquationOES; 605 // private void* glDrawTexsOES; 606 // private void* glDrawTexiOES; 607 // private void* glDrawTexxOES; 608 // private void* glDrawTexsvOES; 609 // private void* glDrawTexivOES; 610 // private void* glDrawTexxvOES; 611 // private void* glDrawTexfOES; 612 // private void* glDrawTexfvOES; 613 // private void* glAlphaFuncxOES; 614 // private void* glClearColorxOES; 615 // private void* glClearDepthxOES; 616 // private void* glClipPlanexOES; 617 // private void* glColor4xOES; 618 // private void* glDepthRangexOES; 619 // private void* glFogxOES; 620 // private void* glFogxvOES; 621 // private void* glFrustumxOES; 622 // private void* glGetClipPlanexOES; 623 // private void* glGetFixedvOES; 624 // private void* glGetLightxvOES; 625 // private void* glGetMaterialxvOES; 626 // private void* glGetTexEnvxvOES; 627 // private void* glGetTexParameterxvOES; 628 // private void* glLightModelxOES; 629 // private void* glLightModelxvOES; 630 // private void* glLightxOES; 631 // private void* glLightxvOES; 632 // private void* glLineWidthxOES; 633 // private void* glLoadMatrixxOES; 634 // private void* glMaterialxOES; 635 // private void* glMaterialxvOES; 636 // private void* glMultMatrixxOES; 637 // private void* glMultiTexCoord4xOES; 638 // private void* glNormal3xOES; 639 // private void* glOrthoxOES; 640 // private void* glPointParameterxOES; 641 // private void* glPointParameterxvOES; 642 // private void* glPointSizexOES; 643 // private void* glPolygonOffsetxOES; 644 // private void* glRotatexOES; 645 // private void* glSampleCoveragexOES; 646 // private void* glScalexOES; 647 // private void* glTexEnvxOES; 648 // private void* glTexEnvxvOES; 649 // private void* glTexParameterxOES; 650 // private void* glTexParameterxvOES; 651 // private void* glTranslatexOES; 652 // private void* glIsRenderbufferOES; 653 // private void* glBindRenderbufferOES; 654 // private void* glDeleteRenderbuffersOES; 655 // private void* glGenRenderbuffersOES; 656 // private void* glRenderbufferStorageOES; 657 // private void* glGetRenderbufferParameterivOES; 658 // private void* glIsFramebufferOES; 659 // private void* glBindFramebufferOES; 660 // private void* glDeleteFramebuffersOES; 661 // private void* glGenFramebuffersOES; 662 // private void* glCheckFramebufferStatusOES; 663 // private void* glFramebufferRenderbufferOES; 664 // private void* glFramebufferTexture2DOES; 665 // private void* glGetFramebufferAttachmentParameterivOES; 666 // private void* glGenerateMipmapOES; 667 // private void* glCurrentPaletteMatrixOES; 668 // private void* glLoadPaletteFromModelViewMatrixOES; 669 // private void* glMatrixIndexPointerOES; 670 // private void* glWeightPointerOES; 671 // private void* glQueryMatrixxOES; 672 // private void* glDepthRangefOES; 673 // private void* glFrustumfOES; 674 // private void* glOrthofOES; 675 // private void* glClipPlanefOES; 676 // private void* glGetClipPlanefOES; 677 // private void* glClearDepthfOES; 678 // private void* glTexGenfOES; 679 // private void* glTexGenfvOES; 680 // private void* glTexGeniOES; 681 // private void* glTexGenivOES; 682 // private void* glTexGenxOES; 683 // private void* glTexGenxvOES; 684 // private void* glGetTexGenfvOES; 685 // private void* glGetTexGenivOES; 686 // private void* glGetTexGenxvOES; 687 // private void* glBindVertexArrayOES; 688 // private void* glDeleteVertexArraysOES; 689 // private void* glGenVertexArraysOES; 690 // private void* glIsVertexArrayOES; 691 // private void* glCopyTextureLevelsAPPLE; 692 // private void* glRenderbufferStorageMultisampleAPPLE; 693 // private void* glResolveMultisampleFramebufferAPPLE; 694 // private void* glFenceSyncAPPLE; 695 // private void* glIsSyncAPPLE; 696 // private void* glDeleteSyncAPPLE; 697 // private void* glClientWaitSyncAPPLE; 698 // private void* glWaitSyncAPPLE; 699 // private void* glGetInteger64vAPPLE; 700 // private void* glGetSyncivAPPLE; 701 // private void* glMapBufferRangeEXT; 702 // private void* glFlushMappedBufferRangeEXT; 703 // private void* glRenderbufferStorageMultisampleEXT; 704 // private void* glFramebufferTexture2DMultisampleEXT; 705 // private void* glGetGraphicsResetStatusEXT; 706 // private void* glReadnPixelsEXT; 707 // private void* glGetnUniformfvEXT; 708 // private void* glGetnUniformivEXT; 709 // private void* glTexStorage1DEXT; 710 // private void* glTexStorage2DEXT; 711 // private void* glTexStorage3DEXT; 712 // private void* glTextureStorage1DEXT; 713 // private void* glTextureStorage2DEXT; 714 // private void* glTextureStorage3DEXT; 715 // private void* glClipPlanefIMG; 716 // private void* glClipPlanexIMG; 717 // private void* glRenderbufferStorageMultisampleIMG; 718 // private void* glFramebufferTexture2DMultisampleIMG; 719 // private void* glStartTilingQCOM; 720 // private void* glEndTilingQCOM; 721 // private void* evasglCreateSync; 722 // private void* evasglDestroySync; 723 // private void* evasglClientWaitSync; 724 // private void* evasglSignalSync; 725 // private void* evasglGetSyncAttrib; 726 // private void* evasglWaitSync; 727 // private void* evasglBindWaylandDisplay; 728 // private void* evasglUnbindWaylandDisplay; 729 // private void* evasglQueryWaylandBuffer; 730 // private void* glBeginQuery; 731 // private void* glBeginTransformFeedback; 732 // private void* glBindBufferBase; 733 // private void* glBindBufferRange; 734 // private void* glBindSampler; 735 // private void* glBindTransformFeedback; 736 // private void* glBindVertexArray; 737 // private void* glBlitFramebuffer; 738 // private void* glClearBufferfi; 739 // private void* glClearBufferfv; 740 // private void* glClearBufferiv; 741 // private void* glClearBufferuiv; 742 // private void* glClientWaitSync; 743 // private void* glCompressedTexImage3D; 744 // private void* glCompressedTexSubImage3D; 745 // private void* glCopyBufferSubData; 746 // private void* glCopyTexSubImage3D; 747 // private void* glDeleteQueries; 748 // private void* glDeleteSamplers; 749 // private void* glDeleteSync; 750 // private void* glDeleteTransformFeedbacks; 751 // private void* glDeleteVertexArrays; 752 // private void* glDrawArraysInstanced; 753 // private void* glDrawBuffers; 754 // private void* glDrawElementsInstanced; 755 // private void* glDrawRangeElements; 756 // private void* glEndQuery; 757 // private void* glEndTransformFeedback; 758 // private void* glFenceSync; 759 // private void* glFlushMappedBufferRange; 760 // private void* glFramebufferTextureLayer; 761 // private void* glGenQueries; 762 // private void* glGenSamplers; 763 // private void* glGenTransformFeedbacks; 764 // private void* glGenVertexArrays; 765 // private void* glGetActiveUniformBlockiv; 766 // private void* glGetActiveUniformBlockName; 767 // private void* glGetActiveUniformsiv; 768 // private void* glGetBufferParameteri64v; 769 // private void* glGetBufferPointerv; 770 // private void* glGetFragDataLocation; 771 // private void* glGetInteger64i_v; 772 // private void* glGetInteger64v; 773 // private void* glGetIntegeri_v; 774 // private void* glGetInternalformativ; 775 // private void* glGetProgramBinary; 776 // private void* glGetQueryiv; 777 // private void* glGetQueryObjectuiv; 778 // private void* glGetSamplerParameterfv; 779 // private void* glGetSamplerParameteriv; 780 // private void* glGetStringi; 781 // private void* glGetSynciv; 782 // private void* glGetTransformFeedbackVarying; 783 // private void* glGetUniformBlockIndex; 784 // private void* glGetUniformIndices; 785 // private void* glGetUniformuiv; 786 // private void* glGetVertexAttribIiv; 787 // private void* glGetVertexAttribIuiv; 788 // private void* glInvalidateFramebuffer; 789 // private void* glInvalidateSubFramebuffer; 790 // private void* glIsQuery; 791 // private void* glIsSampler; 792 // private void* glIsSync; 793 // private void* glIsTransformFeedback; 794 // private void* glIsVertexArray; 795 // private void* glMapBufferRange; 796 // private void* glPauseTransformFeedback; 797 // private void* glProgramBinary; 798 // private void* glProgramParameteri; 799 // private void* glReadBuffer; 800 // private void* glRenderbufferStorageMultisample; 801 // private void* glResumeTransformFeedback; 802 // private void* glSamplerParameterf; 803 // private void* glSamplerParameterfv; 804 // private void* glSamplerParameteri; 805 // private void* glSamplerParameteriv; 806 // private void* glTexImage3D; 807 // private void* glTexStorage2D; 808 // private void* glTexStorage3D; 809 // private void* glTexSubImage3D; 810 // private void* glTransformFeedbackVaryings; 811 // private void* glUniform1ui; 812 // private void* glUniform1uiv; 813 // private void* glUniform2ui; 814 // private void* glUniform2uiv; 815 // private void* glUniform3ui; 816 // private void* glUniform3uiv; 817 // private void* glUniform4ui; 818 // private void* glUniform4uiv; 819 // private void* glUniformBlockBinding; 820 // private void* glUniformMatrix2x3fv; 821 // private void* glUniformMatrix3x2fv; 822 // private void* glUniformMatrix2x4fv; 823 // private void* glUniformMatrix4x2fv; 824 // private void* glUniformMatrix3x4fv; 825 // private void* glUniformMatrix4x3fv; 826 // private void* glUnmapBuffer; 827 // private void* glVertexAttribDivisor; 828 // private void* glVertexAttribI4i; 829 // private void* glVertexAttribI4iv; 830 // private void* glVertexAttribI4ui; 831 // private void* glVertexAttribI4uiv; 832 // private void* glVertexAttribIPointer; 833 // private void* glWaitSync; 834 // private void* glDispatchCompute; 835 // private void* glDispatchComputeIndirect; 836 // private void* glDrawArraysIndirect; 837 // private void* glDrawElementsIndirect; 838 // private void* glFramebufferParameteri; 839 // private void* glGetFramebufferParameteriv; 840 // private void* glGetProgramInterfaceiv; 841 // private void* glGetProgramResourceIndex; 842 // private void* glGetProgramResourceName; 843 // private void* glGetProgramResourceiv; 844 // private void* glGetProgramResourceLocation; 845 // private void* glUseProgramStages; 846 // private void* glActiveShaderProgram; 847 // private void* glCreateShaderProgramv; 848 // private void* glBindProgramPipeline; 849 // private void* glDeleteProgramPipelines; 850 // private void* glGenProgramPipelines; 851 // private void* glIsProgramPipeline; 852 // private void* glGetProgramPipelineiv; 853 // private void* glProgramUniform1i; 854 // private void* glProgramUniform2i; 855 // private void* glProgramUniform3i; 856 // private void* glProgramUniform4i; 857 // private void* glProgramUniform1ui; 858 // private void* glProgramUniform2ui; 859 // private void* glProgramUniform3ui; 860 // private void* glProgramUniform4ui; 861 // private void* glProgramUniform1f; 862 // private void* glProgramUniform2f; 863 // private void* glProgramUniform3f; 864 // private void* glProgramUniform4f; 865 // private void* glProgramUniform1iv; 866 // private void* glProgramUniform2iv; 867 // private void* glProgramUniform3iv; 868 // private void* glProgramUniform4iv; 869 // private void* glProgramUniform1uiv; 870 // private void* glProgramUniform2uiv; 871 // private void* glProgramUniform3uiv; 872 // private void* glProgramUniform4uiv; 873 // private void* glProgramUniform1fv; 874 // private void* glProgramUniform2fv; 875 // private void* glProgramUniform3fv; 876 // private void* glProgramUniform4fv; 877 // private void* glProgramUniformMatrix2fv; 878 // private void* glProgramUniformMatrix3fv; 879 // private void* glProgramUniformMatrix4fv; 880 // private void* glProgramUniformMatrix2x3fv; 881 // private void* glProgramUniformMatrix3x2fv; 882 // private void* glProgramUniformMatrix2x4fv; 883 // private void* glProgramUniformMatrix4x2fv; 884 // private void* glProgramUniformMatrix3x4fv; 885 // private void* glProgramUniformMatrix4x3fv; 886 // private void* glValidateProgramPipeline; 887 // private void* glGetProgramPipelineInfoLog; 888 // private void* glBindImageTexture; 889 // private void* glGetBooleani_v; 890 // private void* glMemoryBarrier; 891 // private void* glMemoryBarrierByRegion; 892 // private void* glTexStorage2DMultisample; 893 // private void* glGetMultisamplefv; 894 // private void* glSampleMaski; 895 // private void* glGetTexLevelParameteriv; 896 // private void* glGetTexLevelParameterfv; 897 // private void* glBindVertexBuffer; 898 // private void* glVertexAttribFormat; 899 // private void* glVertexAttribIFormat; 900 // private void* glVertexAttribBinding; 901 // private void* glVertexBindingDivisor; 902 // private void* glBlendBarrier; 903 // private void* glCopyImageSubData; 904 // private void* glDebugMessageControl; 905 // private void* glDebugMessageInsert; 906 // private void* glDebugMessageCallback; 907 // private void* glGetDebugMessageLog; 908 // private void* glPushDebugGroup; 909 // private void* glPopDebugGroup; 910 // private void* glObjectLabel; 911 // private void* glGetObjectLabel; 912 // private void* glObjectPtrLabel; 913 // private void* glGetObjectPtrLabel; 914 // private void* glEnablei; 915 // private void* glDisablei; 916 // private void* glBlendEquationi; 917 // private void* glBlendEquationSeparatei; 918 // private void* glBlendFunci; 919 // private void* glBlendFuncSeparatei; 920 // private void* glColorMaski; 921 // private void* glIsEnabledi; 922 // private void* glDrawElementsBaseVertex; 923 // private void* glDrawRangeElementsBaseVertex; 924 // private void* glDrawElementsInstancedBaseVertex; 925 // private void* glFramebufferTexture; 926 // private void* glPrimitiveBoundingBox; 927 // private void* glGetGraphicsResetStatus; 928 // private void* glReadnPixels; 929 // private void* glGetnUniformfv; 930 // private void* glGetnUniformiv; 931 // private void* glGetnUniformuiv; 932 // private void* glMinSampleShading; 933 // private void* glPatchParameteri; 934 // private void* glTexParameterIiv; 935 // private void* glTexParameterIuiv; 936 // private void* glGetTexParameterIiv; 937 // private void* glGetTexParameterIuiv; 938 // private void* glSamplerParameterIiv; 939 // private void* glSamplerParameterIuiv; 940 // private void* glGetSamplerParameterIiv; 941 // private void* glGetSamplerParameterIuiv; 942 // private void* glTexBuffer; 943 // private void* glTexBufferRange; 944 // private void* glTexStorage3DMultisample; 945 // #pragma warning restore 0169 946 // } 947 // #endif 948 // } 949 }