aglet/gl

    Dark Mode
Search:
Group by:

Abstract API for OpenGL.

Types

FramebufferTarget = enum
  ftRead, ftDraw
  Source Edit
BufferTarget = enum
  btArray, btElementArray, btPixelPack, btPixelUnpack
  Source Edit
TextureTarget = enum
  ttTexture1D, ttTexture1DArray, ttTexture2D, ttTexture2DMultisample,
  ttTexture2DArray, ttTexture2DMultisampleArray, ttTexture3D, ttTextureCubeMapPosX,
  ttTextureCubeMapNegX, ttTextureCubeMapPosY, ttTextureCubeMapNegY,
  ttTextureCubeMapPosZ, ttTextureCubeMapNegZ
  Source Edit
OpenGlFeature = enum
  glfBlend, glfColorLogicOp, glfCullFace, glfDepthTest, glfDither, glfLineSmooth,
  glfMultisample, glfPolygonSmooth, glfPrimitiveRestart, glfScissorTest,
  glfStencilTest, glfTextureCubeMapSeamless, glfProgramPointSize
  Source Edit
VertexArray = object
  buffers: array[BufferTarget, GlUint]
  id*: GlUint
  Source Edit
Framebuffer = ref object
  id*: GlUint
  drawBuffers: seq[GlEnum]
  Source Edit
OpenGl = ref object
  version*: string
  sBlendColor: tuple[r, g, b, a: GlClampf]
  sBlendEquation: tuple[rgb, alpha: GlEnum]
  sBlendFunc: tuple[srcRgb, destRgb, srcAlpha, destAlpha: GlEnum]
  sBuffers: array[BufferTarget, GlUint]
  sClearColor: tuple[r, g, b, a: GlClampf]
  sClearDepth: GlClampd
  sClearStencil: GlInt
  sColorMask: tuple[r, g, b, a: GlBool]
  sCullFace: GlEnum
  sDepthFunc: GlEnum
  sDepthMask: bool
  sEnabledFeatures: array[OpenGlFeature, bool]
  sFramebuffers: tuple[read, draw: Framebuffer]
  sFrontFace: GlEnum
  sHints: array[Hint, GlEnum]
  sLogicOp: GlEnum
  sLineWidth: GlFloat
  sPointSize: GlFloat
  sPolygonModes: array[Facing, GlEnum]
  sPrimitiveRestartIndex: GlUint
  sProgram: GlUint
  sRenderbuffer: GlUint
  sSamplerBindings: seq[GlUint]
  sScissor: tuple[x, y: GlInt, width, height: GlSizei]
  sStencilFuncs: array[Facing, tuple[fn: GlEnum, refr: GlInt, mask: GlUint]]
  sStencilMasks: array[Facing, GlUint]
  sStencilOps: array[Facing, tuple[sfail, dpfail, dppass: GlEnum]]
  sTextureUnit: int
  sTextureUnitBindings: seq[array[TextureTarget, GlUint]]
  sVertexArray: VertexArray
  sViewport: tuple[x, y: GlInt, w, h: GlSizei]
  uniformTextureUnit: int
  currentDrawParamsHash*: Hash
  defaultFramebufferSamples*: int
  defaultFramebuffer*: Framebuffer
  glActiveTexture: proc (texture: GlEnum) {...}{.cdecl.}
  glBindBuffer: proc (target: GlEnum; buffer: GlUint) {...}{.cdecl.}
  glBindFramebuffer: proc (target: GlEnum; framebuffer: GlUint) {...}{.cdecl.}
  glBindRenderbuffer: proc (target: GlEnum; renderbuffer: GlUint) {...}{.cdecl.}
  glBindSampler: proc (unit, sampler: GlUint) {...}{.cdecl.}
  glBindTexture: proc (target: GlEnum; texture: GlUint) {...}{.cdecl.}
  glBindVertexArray: proc (array: GlUint) {...}{.cdecl.}
  glBlendColor: proc (r, g, b, a: GlClampf) {...}{.cdecl.}
  glBlendEquationSeparate: proc (modeRGB, modeAlpha: GlEnum) {...}{.cdecl.}
  glBlendFuncSeparate: proc (srcRGB, destRGB: GlEnum; srcAlpha, destAlpha: GlEnum) {...}{.
      cdecl.}
  glClear: proc (targets: GlBitfield) {...}{.cdecl.}
  glClearColor: proc (r, g, b, a: GlClampf) {...}{.cdecl.}
  glClearDepth: proc (depth: GlClampd) {...}{.cdecl.}
  glClearStencil: proc (stencil: GlInt) {...}{.cdecl.}
  glColorMask: proc (r, g, b, a: GlBool) {...}{.cdecl.}
  glCullFace: proc (mode: GlEnum) {...}{.cdecl.}
  glDepthFunc: proc (fn: GlEnum) {...}{.cdecl.}
  glDepthMask: proc (mask: GlBool) {...}{.cdecl.}
  glDrawBuffers: proc (n: GlSizei; bufs: ptr GlEnum) {...}{.cdecl.}
  glDisable: proc (cap: GlEnum) {...}{.cdecl.}
  glEnable: proc (cap: GlEnum) {...}{.cdecl.}
  glFrontFace: proc (mode: GlEnum) {...}{.cdecl.}
  glHint: proc (target, mode: GlEnum) {...}{.cdecl.}
  glLineWidth: proc (width: GlFloat) {...}{.cdecl.}
  glLogicOp: proc (opcode: GlEnum) {...}{.cdecl.}
  glPixelStorei: proc (pname: GlEnum; param: GlInt) {...}{.cdecl.}
  glPointSize: proc (size: GlFloat) {...}{.cdecl.}
  glPolygonMode: proc (face, mode: GlEnum) {...}{.cdecl.}
  glPrimitiveRestartIndex: proc (index: GlUint) {...}{.cdecl.}
  glScissor: proc (x, y: GlInt; width, height: GlSizei) {...}{.cdecl.}
  glStencilFuncSeparate: proc (face, fn: GlEnum; reference: GlInt; mask: GlUint) {...}{.cdecl.}
  glStencilMaskSeparate: proc (face: GlEnum; mask: GlUint) {...}{.cdecl.}
  glStencilOpSeparate: proc (face, sfail, dpfail, dppass: GlEnum) {...}{.cdecl.}
  glUseProgram: proc (program: GlUint) {...}{.cdecl.}
  glViewport: proc (x, y: GlInt; width, height: GlSizei) {...}{.cdecl.}
  glAttachShader: proc (program, shader: GlUint) {...}{.cdecl.}
  glBindAttribLocation: proc (program, index: GlUint; name: cstring) {...}{.cdecl.}
  glBlitFramebuffer: proc (srcX0, srcY0, srcX1, srcY1: GlInt;
                         destX0, destY0, destX1, destY1: GlInt; mask: GlBitfield;
                         filter: GlEnum) {...}{.cdecl.}
  glBufferData: proc (target: GlEnum; size: GlSizeiptr; data: pointer; usage: GlEnum) {...}{.
      cdecl.}
  glBufferSubData: proc (target: GlEnum; offset: GlIntptr; size: GlSizeiptr;
                       data: pointer) {...}{.cdecl.}
  glCheckFramebufferStatus: proc (target: GlEnum): GlEnum {...}{.cdecl.}
  glClientWaitSync: proc (sync: GlSync; flags: GlBitfield; timeout: GlUint64): GlEnum {...}{.
      cdecl.}
  glCompileShader: proc (shader: GlUint) {...}{.cdecl.}
  glCreateProgram: proc (): GlUint {...}{.cdecl.}
  glCreateShader: proc (shaderType: GlEnum): GlUint {...}{.cdecl.}
  glDeleteBuffers: proc (n: GlSizei; buffers: pointer) {...}{.cdecl.}
  glDeleteFramebuffers: proc (n: GlSizei; framebuffers: pointer) {...}{.cdecl.}
  glDeleteRenderbuffers: proc (n: GlSizei; renderbuffers: pointer) {...}{.cdecl.}
  glDeleteProgram: proc (program: GlUint) {...}{.cdecl.}
  glDeleteSamplers: proc (n: GlSizei; samplers: pointer) {...}{.cdecl.}
  glDeleteShader: proc (shader: GlUint) {...}{.cdecl.}
  glDeleteSync: proc (sync: GlSync) {...}{.cdecl.}
  glDeleteTextures: proc (n: GlSizei; textures: pointer) {...}{.cdecl.}
  glDeleteVertexArrays: proc (n: GlSizei; arrays: pointer) {...}{.cdecl.}
  glDisableVertexAttribArray: proc (index: GlUint) {...}{.cdecl.}
  glDrawArrays: proc (mode: GlEnum; first: GlInt; count: GlSizei) {...}{.cdecl.}
  glDrawArraysInstanced: proc (mode: GlEnum; first: GlInt; count, primCount: GlSizei) {...}{.
      cdecl.}
  glDrawElements: proc (mode: GlEnum; count: GlSizei; kind: GlEnum; indices: pointer) {...}{.
      cdecl.}
  glDrawElementsInstanced: proc (mode: GlEnum; count: GlSizei; kind: GlEnum;
                               indices: pointer; primCount: GlSizei) {...}{.cdecl.}
  glEnableVertexAttribArray: proc (index: GlUint) {...}{.cdecl.}
  glFenceSync: proc (condition: GlEnum; flags: GlBitfield): GlSync {...}{.cdecl.}
  glFramebufferRenderbuffer: proc (target, attachment: GlEnum;
                                 renderbufferTarget: GlEnum; renderbuffer: GlUint) {...}{.
      cdecl.}
  glFramebufferTexture1D: proc (target, attachment, texTarget: GlEnum;
                              texture: GlUint; level: GlInt) {...}{.cdecl.}
  glFramebufferTexture2D: proc (target, attachment, texTarget: GlEnum;
                              texture: GlUint; level: GlInt) {...}{.cdecl.}
  glFramebufferTextureLayer: proc (target, attachment: GlEnum; texture: GlUint;
                                 level, layer: GlInt) {...}{.cdecl.}
  glGenBuffers: proc (n: GlSizei; buffers: pointer) {...}{.cdecl.}
  glGenFramebuffers: proc (n: GlSizei; framebuffers: pointer) {...}{.cdecl.}
  glGenRenderbuffers: proc (n: GlSizei; renderbuffers: pointer) {...}{.cdecl.}
  glGenSamplers: proc (n: GlSizei; samplers: pointer) {...}{.cdecl.}
  glGenTextures: proc (n: GlSizei; textures: pointer) {...}{.cdecl.}
  glGenVertexArrays: proc (n: GlSizei; arrays: pointer) {...}{.cdecl.}
  glGenerateMipmap: proc (target: GlEnum) {...}{.cdecl.}
  glGetError: proc (): GlEnum {...}{.cdecl.}
  glGetProgramInfoLog: proc (program: GlUint; maxLen: GlSizei; length: ptr GlSizei;
                           infoLog: cstring) {...}{.cdecl.}
  glGetProgramiv: proc (program: GlUint; pname: GlEnum; params: pointer) {...}{.cdecl.}
  glGetShaderInfoLog: proc (shader: GlUint; maxLen: GlSizei; length: ptr GlSizei;
                          infoLog: cstring) {...}{.cdecl.}
  glGetShaderiv: proc (shader: GlUint; pname: GlEnum; params: pointer) {...}{.cdecl.}
  glGetString: proc (name: GlEnum): cstring {...}{.cdecl.}
  glGetIntegerv: proc (pname: GlEnum; params: pointer) {...}{.cdecl.}
  glGetTexImage: proc (target: GlEnum; level: GlInt; format, typ: GlEnum; image: pointer) {...}{.
      cdecl.}
  glGetUniformLocation: proc (program: GlUint; name: cstring): GlInt {...}{.cdecl.}
  glLinkProgram: proc (program: GlUint) {...}{.cdecl.}
  glMapBuffer: proc (target, access: GlEnum): pointer {...}{.cdecl.}
  glReadPixels: proc (x, y: GlInt; width, height: GlSizei; format, typ: GlEnum;
                    data: pointer) {...}{.cdecl.}
  glRenderbufferStorageMultisample: proc (target: GlEnum; samples: GlSizei;
                                        internalFormat: GlEnum;
                                        width, height: GlSizei) {...}{.cdecl.}
  glSamplerParameteri: proc (sampler: GlUint; pname: GlEnum; param: GlInt) {...}{.cdecl.}
  glSamplerParameterfv: proc (sampler: GlUint; pname: GlEnum; params: pointer) {...}{.cdecl.}
  glShaderSource: proc (shader: GlUint; count: GlSizei; str: cstringArray;
                      length: pointer) {...}{.cdecl.}
  glTexImage1D: proc (target: GlEnum; level, internalFormat: GlInt; width: GlSizei;
                    border: GlInt; format, kind: GlEnum; data: pointer) {...}{.cdecl.}
  glTexImage2D: proc (target: GlEnum; level, internalFormat: GlInt;
                    width, height: GlSizei; border: GlInt; format, kind: GlEnum;
                    data: pointer) {...}{.cdecl.}
  glTexImage2DMultisample: proc (target: GlEnum; samples: GlSizei;
                               internalFormat: GlInt; width, height: GlSizei;
                               fixedSampleLocations: GlBool) {...}{.cdecl.}
  glTexImage3D: proc (target: GlEnum; level, internalFormat: GlInt;
                    width, height, depth: GlSizei; border: GlInt;
                    format, kind: GlEnum; data: pointer) {...}{.cdecl.}
  glTexImage3DMultisample: proc (target: GlEnum; samples: GlSizei;
                               internalFormat: GlInt;
                               width, height, depth: GlSizei;
                               fixedSampleLocations: GlBool) {...}{.cdecl.}
  glTexParameteriv: proc (target, pname: GlEnum; params: ptr GlInt) {...}{.cdecl.}
  glTexSubImage1D: proc (target: GlEnum; level, xoffset: GlInt; width: GlSizei;
                       format, typ: GlEnum; data: pointer) {...}{.cdecl.}
  glTexSubImage2D: proc (target: GlEnum; level, xoffset, yoffset: GlInt;
                       width, height: GlSizei; format, typ: GlEnum; data: pointer) {...}{.
      cdecl.}
  glTexSubImage3D: proc (target: GlEnum; level: GlInt;
                       xoffset, yoffset, zoffset: GlInt;
                       width, height, depth: GlSizei; format, typ: GlEnum;
                       data: pointer) {...}{.cdecl.}
  glUniform1fv, glUniform2fv, glUniform3fv, glUniform4fv, glUniform1iv, glUniform2iv,
  glUniform3iv, glUniform4iv, glUniform1uiv, glUniform2uiv, glUniform3uiv,
  glUniform4uiv: UniformVecProc
  glUniformMatrix2fv, glUniformMatrix3fv, glUniformMatrix4fv, glUniformMatrix2x3fv,
  glUniformMatrix3x2fv, glUniformMatrix2x4fv, glUniformMatrix4x2fv,
  glUniformMatrix3x4fv, glUniformMatrix4x3fv: UniformMatrixProc
  glUnmapBuffer: proc (target: GlEnum): GlBool {...}{.cdecl.}
  glVertexAttribPointer: proc (index: GlUint; size: GlInt; typ: GlEnum;
                             normalized: bool; stride: GlSizei; point: pointer) {...}{.
      cdecl.}
  glVertexAttribIPointer: proc (index: GlUint; size: GlInt; typ: GlEnum;
                              stride: GlSizei; point: pointer) {...}{.cdecl.}
The OpenGL API and state. This object is quite a behemoth, but that's also what OpenGL is.   Source Edit

Procs

proc load(gl: OpenGl; getProcAddr: proc (name: string): pointer) {...}{.
    raises: [Exception, OSError], tags: [RootEffect].}
Loads OpenGL procs to the given GL instance. aglet uses a custom loader because as far as I could tell, glad doesn't support loading procs to an object. This unfortunately means that the code will need to list each and every one of the GL procs it uses, but it's a good opportunity to use some macro magic so it's not that bad.   Source Edit
proc toGlEnum(hint: Hint): GlEnum {...}{.inline, raises: [], tags: [].}
  Source Edit
proc toGlEnum(facing: Facing): GlEnum {...}{.inline, raises: [], tags: [].}
  Source Edit
proc toGlEnum(mode: AccessMode): GlEnum {...}{.inline, raises: [], tags: [].}
  Source Edit
proc newGl(): OpenGl {...}{.raises: [], tags: [].}
  Source Edit
proc viewport(gl: OpenGl; x, y: GlInt; width, height: GlSizei) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc feature(gl: OpenGl; feature: OpenGlFeature; enabled: bool) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc clearColor(gl: OpenGl; r, g, b, a: GlClampf) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc clearDepth(gl: OpenGl; depth: GlClampd) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc clearStencil(gl: OpenGl; stencil: GlInt) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc bindBuffer(gl: OpenGl; target: BufferTarget; buffer: GlUint) {...}{.
    raises: [Exception, ValueError], tags: [RootEffect].}
  Source Edit
proc bindFramebuffer(gl: OpenGl; targets: set[FramebufferTarget]; buffer: Framebuffer) {...}{.
    raises: [Exception, ValueError], tags: [RootEffect].}
  Source Edit
proc bindRenderbuffer(gl: OpenGl; renderbuffer: GlUint) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc bindSampler(gl: OpenGl; unit: int; sampler: GlUint) {...}{.
    raises: [ValueError, Exception], tags: [RootEffect].}
  Source Edit
proc textureUnit=(gl: OpenGl; unit: int) {...}{.raises: [ValueError, Exception],
                                      tags: [RootEffect].}
  Source Edit
proc bindTexture(gl: OpenGl; target: TextureTarget; texture: GlUint) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc bindVertexArray(gl: OpenGl; vao: VertexArray) {...}{.raises: [Exception, ValueError],
    tags: [RootEffect].}
  Source Edit
proc blendColor(gl: OpenGl; r, g, b, a: GlClampf) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc blendEquation(gl: OpenGl; colorMode, alphaMode: GlEnum) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc blendFunc(gl: OpenGl; srcRgb, destRgb, srcAlpha, destAlpha: GlEnum) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc colorMask(gl: OpenGl; red, green, blue, alpha: GlBool) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc cullFace(gl: OpenGl; mode: GlEnum) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc depthFunc(gl: OpenGl; function: GlEnum) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc depthMask(gl: OpenGl; enabled: bool) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc drawBuffers(gl: OpenGl; buffers: seq[GlEnum]) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc frontFace(gl: OpenGl; mode: GlEnum) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc hint(gl: OpenGl; hint: Hint; mode: GlEnum) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc logicOp(gl: OpenGl; opcode: GlEnum) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc lineWidth(gl: OpenGl; width: GlFloat) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc pointSize(gl: OpenGl; size: GlFloat) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc polygonMode(gl: OpenGl; facing: Facing; mode: GlEnum) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc primitiveRestartIndex(gl: OpenGl; index: GlUint) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc scissor(gl: OpenGl; x, y: GlInt; width, height: GlSizei) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc stencilFunc(gl: OpenGl; facing: Facing; fn: GlEnum; reference: GlInt; mask: GlUint) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc stencilMask(gl: OpenGl; facing: Facing; mask: GlUint) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc stencilOp(gl: OpenGl; facing: Facing; sfail, dpfail, dppass: GlEnum) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc useProgram(gl: OpenGl; program: GlUint) {...}{.raises: [Exception, ValueError],
    tags: [RootEffect].}
  Source Edit
proc createShader(gl: OpenGl; shaderType: GlEnum; source: string; outError: var string): Option[
    GlUint] {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc createProgram(gl: OpenGl): GlUint {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc attachShader(gl: OpenGl; program, shader: GlUint) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc bindAttribLocation(gl: OpenGl; program: GlUint; index: Natural; name: string) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc linkProgram(gl: OpenGl; program: GlUint): Option[string] {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc getUniformLocation(gl: OpenGl; program: GlUint; name: string): GlInt {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc resetTextureUnitCounter(gl: OpenGl) {...}{.raises: [], tags: [].}
  Source Edit
proc uniform(gl: OpenGl; loc: GlInt; u: Uniform) {...}{.raises: [Exception, ValueError],
    tags: [RootEffect].}
  Source Edit
proc deleteShader(gl: OpenGl; shader: GlUint) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc deleteProgram(gl: OpenGl; program: GlUint) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc createBuffer(gl: OpenGl): GlUint {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc bufferData(gl: OpenGl; target: BufferTarget; size: int; data: pointer; usage: GlEnum) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc bufferSubData(gl: OpenGl; target: BufferTarget; where: Slice[int]; data: pointer) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc mapBuffer(gl: OpenGl; target: BufferTarget; access: GlEnum): pointer {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc unmapBuffer(gl: OpenGl; target: BufferTarget) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc deleteBuffer(gl: OpenGl; buffer: GlUint) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc createVertexArray(gl: OpenGl): VertexArray {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc vertexAttrib[T](gl: OpenGl; index, stride, offset: int)
  Source Edit
proc enableVertexAttrib(gl: OpenGl; index: int) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc disableVertexAttrib(gl: OpenGl; index: int) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc deleteVertexArray(gl: OpenGl; array: VertexArray) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc createTexture(gl: OpenGl): GlUint {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc data1D(gl: OpenGl; width: Positive; internalFormat, format, typ: GlEnum) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc data2D(gl: OpenGl; target: TextureTarget; width, height: Positive;
           internalFormat, format, typ: GlEnum) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc data2DMS(gl: OpenGl; width, height: Positive; internalFormat: GlEnum;
             samples: Natural; fixedSampleLocations: bool) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc data3D(gl: OpenGl; target: TextureTarget; width, height, depth: Positive;
           internalFormat, format, typ: GlEnum) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc data3DMS(gl: OpenGl; width, height, depth: Positive; internalFormat: GlEnum;
             samples: Natural; fixedSampleLocations: bool) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc subImage1D(gl: OpenGl; x: Natural; width: Positive; format, typ: GlEnum;
               data: pointer) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc subImage2D(gl: OpenGl; target: TextureTarget; x, y: Natural;
               width, height: Positive; format, typ: GlEnum; data: pointer) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc subImage3D(gl: OpenGl; target: TextureTarget; x, y, z: Natural;
               width, height, depth: Positive; format, typ: GlEnum; data: pointer) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc getImage(gl: OpenGl; target: TextureTarget; level: GlInt; format, typ: GlEnum;
             dest: pointer) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc genMipmaps(gl: OpenGl; target: TextureTarget) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc textureParam(gl: OpenGl; target: TextureTarget; param: GlEnum; values: ptr GlInt) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc deleteTexture(gl: OpenGl; texture: GlUint) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc createSampler(gl: OpenGl): GlUint {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc samplerParam(gl: OpenGl; sampler: GlUint; param: GlEnum; value: GlInt) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc samplerParam(gl: OpenGl; sampler: GlUint; param: GlEnum; value: ptr GlFloat) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc deleteSampler(gl: OpenGl; sampler: GlUint) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc createFramebuffer(gl: OpenGl): Framebuffer {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc attachRenderbuffer(gl: OpenGl; attachment: GlEnum; renderbuffer: GlUint) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc attachTexture1D(gl: OpenGl; attachment: GlEnum; texTarget: TextureTarget;
                    texture: GlUint; mipLevel: GlInt) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc attachTexture2D(gl: OpenGl; attachment: GlEnum; texTarget: TextureTarget;
                    texture: GlUint; mipLevel: GlInt) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc attachTextureLayer(gl: OpenGl; attachment: GlEnum; texture: GlUint;
                       mipLevel, layer: GlInt) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc framebufferStatus(gl: OpenGl): GlEnum {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc blitFramebuffer(gl: OpenGl; srcX0, srcY0, srcX1, srcY1: GlInt;
                    destX0, destY0, destX1, destY1: GlInt; mask: GlBitfield;
                    filter: GlEnum) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc deleteFramebuffer(gl: OpenGl; framebuffer: Framebuffer) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc createRenderbuffer(gl: OpenGl): GlUint {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc renderbufferStorage(gl: OpenGl; width, height, samples: GlSizei;
                        internalFormat: GlEnum) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc deleteRenderbuffer(gl: OpenGl; renderbuffer: GlUint) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc createFenceSync(gl: OpenGl; condition: GlEnum): GlSync {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc pollSyncStatus(gl: OpenGl; sync: GlSync; timeout: GlUint64): GlEnum {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc deleteSync(gl: OpenGl; sync: GlSync) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit
proc drawArrays(gl: OpenGl; primitive: GlEnum; start, count: int) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc drawArraysInstanced(gl: OpenGl; primitive: GlEnum;
                        start, count, instanceCount: int) {...}{.raises: [Exception],
    tags: [RootEffect].}
  Source Edit
proc drawElements(gl: OpenGl; primitive: GlEnum; start, count: int; indexType: GlEnum) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc drawElementsInstanced(gl: OpenGl; primitive: GlEnum;
                          start, count, instanceCount: int; indexType: GlEnum) {...}{.
    raises: [Exception], tags: [RootEffect].}
  Source Edit
proc readPixels(gl: OpenGl; x, y: GlInt; width, height: GlSizei; format, typ: GlEnum;
               data: pointer) {...}{.raises: [Exception], tags: [RootEffect].}
  Source Edit

Exports

GL_RG8_SNORM, GL_VERTEX_ATTRIB_ARRAY_DIVISOR, GL_PRIMITIVES_GENERATED, GL_POINT_SIZE_GRANULARITY, GL_TEXTURE_WRAP_R, GL_POINT, GL_INT_SAMPLER_CUBE, GL_RGB8I, GL_MAJOR_VERSION, GL_GEOMETRY_SHADER, GL_RG_INTEGER, GL_POINTS, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, GL_MAX_SERVER_WAIT_TIMEOUT, GL_R8UI, GL_STENCIL_ATTACHMENT, GL_SYNC_GPU_COMMANDS_COMPLETE, GL_DEPTH_FUNC, GL_STENCIL_WRITEMASK, cGL_DOUBLE, GL_PROXY_TEXTURE_3D, GL_TEXTURE_COMPARE_MODE, GL_NONE, GL_VIEWPORT, GL_TRIANGLES, GL_UNPACK_SKIP_ROWS, GL_TEXTURE_MIN_FILTER, GL_RGB_INTEGER, GL_CONSTANT_COLOR, GL_CONTEXT_FLAGS, GL_SYNC_FLUSH_COMMANDS_BIT, GL_FLOAT_MAT4, GL_COMPRESSED_SIGNED_RED_RGTC1, GL_RGBA_INTEGER, GL_MAX_GEOMETRY_OUTPUT_VERTICES, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY, GL_SAMPLE_COVERAGE_INVERT, GL_RGBA, GL_COPY, GL_TEXTURE_BORDER_COLOR, GL_BUFFER_MAPPED, GL_PACK_SKIP_PIXELS, GL_TEXTURE_1D, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, GL_STENCIL_PASS_DEPTH_FAIL, GL_TEXTURE_2D_MULTISAMPLE, GL_LINK_STATUS, GL_RGBA8_SNORM, GL_RGBA32F, GL_FIXED_ONLY, GL_RG32I, GL_RG16I, GL_TEXTURE_COMPRESSION_HINT, GL_COMPRESSED_SRGB_ALPHA, GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_ACTIVE_TEXTURE, GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER, GL_TEXTURE_DEPTH_SIZE, GL_INCR, GL_UNSIGNED_SHORT_1_5_5_5_REV, GL_LINE_SMOOTH, GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, GL_GREEN_INTEGER, GL_RGBA12, GL_MINOR_VERSION, GL_INVERT, GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_SIGNALED, GL_NO_ERROR, GL_MAX_DEPTH_TEXTURE_SAMPLES, GL_UPPER_LEFT, GL_DEPTH_ATTACHMENT, GL_MAP_INVALIDATE_RANGE_BIT, GL_DRAW_BUFFER1, GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS, GL_STENCIL_FAIL, GL_TEXTURE_DEPTH, GL_MAX_COLOR_TEXTURE_SAMPLES, GL_TIMEOUT_EXPIRED, GL_DOUBLEBUFFER, GL_TEXTURE_GREEN_SIZE, GL_R16I, GL_TRANSFORM_FEEDBACK_BUFFER, GL_R32I, GL_TIMEOUT_IGNORED, GL_ONE_MINUS_DST_COLOR, GL_INT_SAMPLER_2D, GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GL_LINEAR_MIPMAP_LINEAR, GL_FUNC_ADD, GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS, GL_MAX_ELEMENTS_INDICES, GL_SAMPLES, GL_RG32F, GL_DEPTH_STENCIL, GL_PROXY_TEXTURE_1D, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT, GL_STENCIL_INDEX8, GL_MAX_FRAGMENT_UNIFORM_BLOCKS, GL_DYNAMIC_COPY, GL_MAX_VARYING_FLOATS, GL_GREEN, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_SRC1_COLOR, GL_UNPACK_ROW_LENGTH, GL_SRC1_ALPHA, GL_TUNSIGNED_SHORT, GL_CULL_FACE_MODE, GL_UNSIGNED_INT_SAMPLER_1D, GL_R32F, GL_RGBA16_SNORM, GL_POINT_SIZE_RANGE, GL_CURRENT_VERTEX_ATTRIB, GL_INT_SAMPLER_2D_ARRAY, GL_SYNC_CONDITION, GL_TEXTURE_SAMPLES, GL_INVALID_FRAMEBUFFER_OPERATION, GL_FRAMEBUFFER_UNDEFINED, GL_TEXTURE_SWIZZLE_R, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, GL_TEXTURE_WIDTH, GL_FLOAT_MAT2, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_STREAM_COPY, GL_MAX_INTEGER_SAMPLES, GL_MAX_GEOMETRY_UNIFORM_COMPONENTS, GL_TEXTURE_LOD_BIAS, GL_TEXTURE_BASE_LEVEL, GL_UNSIGNED_SHORT_5_6_5_REV, GL_SRGB8_ALPHA8, GL_SAMPLER_BINDING, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_RG16UI, GL_AND_REVERSE, GL_NONE_OES, GL_UNSIGNED_SHORT_4_4_4_4, GL_RGB8_SNORM, GL_CLIP_DISTANCE0, GL_BLEND_EQUATION_ALPHA, GL_MAX_RENDERBUFFER_SIZE, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, GL_UNSIGNED_INT_SAMPLER_2D, GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, GL_STREAM_DRAW, GL_PACK_SWAP_BYTES, GL_RGB16UI, GL_TUNSIGNED_INT, GL_TRANSFORM_FEEDBACK_VARYINGS, GL_LEFT, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, GL_MAX_COLOR_ATTACHMENTS, GL_TFLOAT, GL_ALREADY_SIGNALED, GL_UNSIGNED_INT_10_10_10_2, GL_POINT_SPRITE_COORD_ORIGIN, GL_TEXTURE_MAX_LOD, GL_SAMPLE_MASK_VALUE, GL_DONT_CARE, GL_SRC_ALPHA_SATURATE, GL_READ_BUFFER, GL_CURRENT_QUERY, GL_SHADING_LANGUAGE_VERSION, GL_RENDERBUFFER_BLUE_SIZE, GL_ALIASED_LINE_WIDTH_RANGE, GL_RENDERBUFFER_SAMPLES, GL_CLEAR, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, GL_ACTIVE_UNIFORMS, GL_UNIFORM_ARRAY_STRIDE, GL_R16, GL_PIXEL_PACK_BUFFER, GL_GEOMETRY_INPUT_TYPE, GL_R16UI, GL_RGB32UI, GL_FRONT_FACE, GL_QUERY_RESULT, GL_RGB16I, GL_ONE_MINUS_SRC1_ALPHA, GL_FILL, GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAP_UNSYNCHRONIZED_BIT, GL_TRIANGLE_FAN, GL_SAMPLER_2D_MULTISAMPLE_ARRAY, GL_RG8, GL_NOTEQUAL, GL_CW, GL_TEXTURE_2D_ARRAY, GL_BUFFER_SIZE, GL_STENCIL_VALUE_MASK, GL_RGB12, GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH, GL_COMPRESSED_RGBA, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, GL_TEXTURE_RED_SIZE, GL_POINT_FADE_THRESHOLD_SIZE, GL_BLEND_DST_RGB, GL_TEXTURE_SWIZZLE_B, GL_FRAMEBUFFER_ATTACHMENT_LAYERED, GL_VERTEX_ARRAY_BINDING, GL_PROXY_TEXTURE_1D_ARRAY, GL_UNSIGNED_INT_SAMPLER_BUFFER, GL_TIMEOUT_IGNORED_APPLE, GL_FRAMEBUFFER_UNSUPPORTED, GL_OBJECT_TYPE, GL_TEXTURE_GREEN_TYPE, GL_RGB10, GL_SAMPLE_BUFFERS, GL_DRAW_BUFFER6, GL_QUERY_COUNTER_BITS, GL_UNIFORM_IS_ROW_MAJOR, GL_TEXTURE_MAG_FILTER, GL_MAX, GL_NUM_EXTENSIONS, GL_SET, GL_LESS, GL_DRAW_BUFFER, GL_MAX_RECTANGLE_TEXTURE_SIZE, GL_TEXTURE_CUBE_MAP_SEAMLESS, GL_MIN, GL_PROXY_TEXTURE_2D_ARRAY, GL_COLOR_LOGIC_OP, GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_FLOAT_VEC3, GL_UNSIGNED_INT_SAMPLER_3D, GL_DEPTH24_STENCIL8, GL_NICEST, GL_VERTEX_ATTRIB_ARRAY_TYPE, GL_ONE_MINUS_SRC_COLOR, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_VERTEX_ATTRIB_ARRAY_POINTER, GL_TEXTURE_SWIZZLE_A, GL_SRC_ALPHA, GL_TEXTURE_BUFFER, GL_GEOMETRY_VERTICES_OUT, GL_QUERY_RESULT_AVAILABLE, GL_DECR, GL_UNPACK_ALIGNMENT, GL_RGB9_E5, GL_RGBA16I, GL_CULL_FACE, GL_PROXY_TEXTURE_2D_MULTISAMPLE, GL_UNIFORM_BUFFER_START, GL_TEXTURE_CUBE_MAP, GL_STATIC_READ, GL_BACK_LEFT, GL_LINEAR_MIPMAP_NEAREST, GL_SAMPLE_COVERAGE_VALUE, GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, GL_UNSIGNED_INT_5_9_9_9_REV, GL_UNIFORM_BUFFER_BINDING, GL_RG8I, GL_COMPRESSED_SIGNED_RG_RGTC2, GL_PACK_LSB_FIRST, GL_RGB32F, GL_R16_SNORM, GL_OR, GL_BUFFER_ACCESS_FLAGS, GL_INT_SAMPLER_2D_MULTISAMPLE, GL_UNPACK_SKIP_IMAGES, GL_SYNC_STATUS, GL_COPY_READ_BUFFER, GL_LINES_ADJACENCY, GL_INT_2_10_10_10_REV, GL_MAX_VIEWPORT_DIMS, GL_TEXTURE_ALPHA_TYPE, GL_TEXTURE_BUFFER_DATA_STORE_BINDING, GL_BOOL_VEC4, GL_ARRAY_BUFFER_BINDING, GL_DEPTH_RANGE, GL_MAX_TEXTURE_LOD_BIAS, GL_DRAW_BUFFER14, GL_TEXTURE_1D_ARRAY, GL_BGR, GL_TEXTURE_SHARED_SIZE, GL_BGRA, GL_PIXEL_PACK_BUFFER_BINDING, GL_DYNAMIC_READ, GL_TEXTURE0, GL_VENDOR, GL_RG32UI, GL_WRITE_ONLY, GL_MAX_VERTEX_ATTRIBS, GL_TBYTE, GL_UNPACK_IMAGE_HEIGHT, GL_UNIFORM_BLOCK_BINDING, GL_ALPHA, GL_TEXTURE_SWIZZLE_G, GL_DEPTH_COMPONENT32F, GL_CONTEXT_CORE_PROFILE_BIT, GL_COMPRESSED_TEXTURE_FORMATS, GL_INT_VEC3, GL_BACK_RIGHT, GL_POLYGON_SMOOTH, GL_FLOAT_MAT4x2, GL_LINE_SMOOTH_HINT, GL_UNIFORM_MATRIX_STRIDE, GL_R3_G3_B2, GL_RENDERBUFFER_STENCIL_SIZE, GL_UNIFORM_BUFFER_SIZE, GL_BLEND_EQUATION_RGB, GL_UNPACK_LSB_FIRST, GL_AND, GL_COMPARE_REF_TO_TEXTURE, GL_FIRST_VERTEX_CONVENTION, GL_SAMPLER_CUBE_SHADOW, GL_FRONT_LEFT, GL_LINE_WIDTH, GL_ONE_MINUS_DST_ALPHA, GL_BLUE, GL_PROVOKING_VERTEX, GL_MAX_ELEMENTS_VERTICES, GL_VERTEX_ATTRIB_ARRAY_INTEGER, GL_TEXTURE_STENCIL_SIZE, GL_RGB10_A2UI, GL_R16F, GL_SRGB_ALPHA, GL_FRAMEBUFFER, GL_VERTEX_PROGRAM_POINT_SIZE, GL_DRAW_BUFFER0, GL_BUFFER_USAGE, GL_DEPTH_COMPONENT16, GL_STENCIL_BACK_VALUE_MASK, GL_MAP_READ_BIT, GL_SHADER_SOURCE_LENGTH, GL_UNPACK_SKIP_PIXELS, GL_BUFFER_MAP_LENGTH, GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_RGB16F, GL_PRIMITIVE_RESTART_INDEX, GL_COLOR_WRITEMASK, GL_COMPRESSED_RG, GL_QUERY_WAIT, GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, GL_FRAMEBUFFER_DEFAULT, GL_ACTIVE_UNIFORM_MAX_LENGTH, GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_DRAW_FRAMEBUFFER_BINDING, GL_CONDITION_SATISFIED, GL_LEQUAL, GL_UNSIGNED_INT_2_10_10_10_REV, GL_INT_SAMPLER_2D_RECT, GL_TEXTURE_BINDING_BUFFER, GL_TRIANGLES_ADJACENCY, GL_SAMPLER_CUBE, GL_WAIT_FAILED, GL_TEXTURE_ALPHA_SIZE, GL_POINT_SIZE, GL_RGB4, GL_STENCIL_BACK_WRITEMASK, GL_TEXTURE_BINDING_1D_ARRAY, GL_BLEND_COLOR, GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER, GL_TEXTURE_WRAP_T, GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS, GL_LOGIC_OP_MODE, GL_RENDERBUFFER_GREEN_SIZE, GL_TEXTURE_COMPARE_FUNC, GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_INT_SAMPLER_1D_ARRAY, GL_FLOAT_MAT2x3, GL_SMOOTH_POINT_SIZE_RANGE, GL_ONE_MINUS_SRC_ALPHA, GL_RGBA32UI, GL_UNSIGNED_INT_SAMPLER_1D_ARRAY, GL_DEPTH_TEST, GL_NOR, GL_ALWAYS, GL_MAX_GEOMETRY_OUTPUT_COMPONENTS, GL_FRONT_AND_BACK, GL_ACTIVE_ATTRIBUTES, GL_SAMPLER_2D_MULTISAMPLE, GL_FRAMEBUFFER_BINDING, GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, GL_STENCIL_CLEAR_VALUE, GL_DRAW_BUFFER8, GL_TEXTURE_BINDING_RECTANGLE, GL_INT_SAMPLER_3D, GL_RENDERBUFFER_RED_SIZE, GL_INT_VEC2, GL_R32UI, GL_TEXTURE_BINDING_2D_ARRAY, GL_RGBA8UI, GL_SAMPLER_2D_ARRAY_SHADOW, GL_RG16_SNORM, GL_PROXY_TEXTURE_CUBE_MAP, GL_BLEND_SRC, GL_TRANSFORM_FEEDBACK_BUFFER_MODE, GL_DYNAMIC_DRAW, GL_DELETE_STATUS, GL_TEXTURE_DEPTH_TYPE, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, GL_STENCIL_INDEX16, GL_TEXTURE_BINDING_2D_MULTISAMPLE, GL_SAMPLE_MASK, GL_INT_SAMPLER_1D, GL_DRAW_BUFFER9, GL_DRAW_BUFFER2, GL_LOWER_LEFT, GL_TEXTURE_MIN_LOD, GL_COLOR, GL_READ_FRAMEBUFFER_BINDING, GL_BLEND_DST, GL_FUNC_SUBTRACT, GL_PROXY_TEXTURE_RECTANGLE, GL_PACK_ROW_LENGTH, GL_DEPTH_BUFFER_BIT, GL_AND_INVERTED, GL_SCISSOR_TEST, GL_POLYGON_OFFSET_LINE, GL_LINEAR, GL_SRC_COLOR, GL_UNSIGNED_INT_VEC2, GL_STEREO, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, GL_LINE, GL_MAX_ARRAY_TEXTURE_LAYERS, GL_DEPTH_WRITEMASK, GL_STENCIL_INDEX1, GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, GL_STENCIL, GL_SCISSOR_BOX, GL_RGB, GL_RGB8UI, GL_UNSIGNED_INT_SAMPLER_2D_RECT, GL_SYNC_FLAGS, GL_UNSIGNED_INT_VEC3, GL_GEOMETRY_OUTPUT_TYPE, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_SAMPLE_ALPHA_TO_ONE, GL_UNSIGNED_INT_10F_11F_11F_REV, GL_DEPTH_CLEAR_VALUE, GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_DST_COLOR, GL_VERSION, GL_INTERLEAVED_ATTRIBS, GL_DEPTH, GL_DECR_WRAP, GL_FLOAT_MAT3, GL_TEXTURE_BINDING_3D, GL_ELEMENT_ARRAY_BUFFER, GL_PROGRAM_POINT_SIZE, GL_STATIC_DRAW, GL_COMPRESSED_RED, GL_FLOAT_MAT2x4, GL_MAX_FRAGMENT_INPUT_COMPONENTS, GL_SAMPLER_1D_ARRAY, GL_NAND, GL_MIRRORED_REPEAT, GL_UNIFORM_NAME_LENGTH, GL_DEPTH_COMPONENT32, GL_BLUE_INTEGER, GL_TSHORT, GL_R11F_G11F_B10F, GL_SHADER_TYPE, GL_EQUAL, GL_TEXTURE_3D, GL_CONTEXT_PROFILE_MASK, GL_SAMPLER_2D_RECT_SHADOW, GL_TEXTURE_FIXED_SAMPLE_LOCATIONS, GL_DRAW_BUFFER3, GL_MAX_SAMPLES, GL_ARRAY_BUFFER, GL_COLOR_CLEAR_VALUE, GL_INT_VEC4, GL_MAX_CLIP_DISTANCES, GL_DRAW_BUFFER10, GL_UNSIGNED_SHORT_4_4_4_4_REV, GL_CLAMP_READ_COLOR, GL_RG8UI, GL_RGBA16, GL_TRIANGLE_STRIP, GL_FRONT_RIGHT, GL_COMPRESSED_RGB, GL_UNSIGNED_NORMALIZED, GL_COLOR_ATTACHMENT0, GL_DEPTH32F_STENCIL8, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE, GL_READ_WRITE, GL_TEXTURE_COMPRESSED, GL_DST_ALPHA, GL_STENCIL_PASS_DEPTH_PASS, GL_MAP_FLUSH_EXPLICIT_BIT, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, GL_UNSIGNED_INT_24_8, GL_GEQUAL, GL_BLEND, GL_R8, GL_DEPTH_COMPONENT24, GL_RENDERBUFFER_WIDTH, GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_DRAW_BUFFER4, GL_R8_SNORM, GL_RGBA16UI, GL_MAX_GEOMETRY_INPUT_COMPONENTS, GL_COMPRESSED_RED_RGTC1, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, GL_MAX_TEXTURE_SIZE, GL_SAMPLER_2D_RECT, GL_RGBA32I, GL_UNIFORM_BUFFER, GL_UNSIGNALED, GL_RGBA4, GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, GL_EQUIV, GL_SAMPLER_3D, GL_RGBA16F, GL_STENCIL_BACK_FUNC, GL_NEVER, GL_RGB16_SNORM, GL_FLOAT_VEC4, GL_INVALID_VALUE, GL_PRIMITIVE_RESTART, GL_RASTERIZER_DISCARD, GL_UNIFORM_TYPE, GL_COPY_WRITE_BUFFER, GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER, GL_MAX_GEOMETRY_UNIFORM_BLOCKS, GL_RENDERBUFFER, GL_CCW, GL_SMOOTH_POINT_SIZE_GRANULARITY, GL_BOOL_VEC2, GL_SEPARATE_ATTRIBS, GL_HALF_FLOAT, GL_TEXTURE_WRAP_S, GL_STENCIL_INDEX, GL_RIGHT, GL_PIXEL_UNPACK_BUFFER, GL_SYNC_FENCE, GL_RENDERER, GL_TEXTURE, GL_SMOOTH_LINE_WIDTH_GRANULARITY, GL_TEXTURE_RED_TYPE, GL_MAX_SAMPLE_MASK_WORDS, GL_UNSIGNED_INT_8_8_8_8_REV, GL_READ_FRAMEBUFFER, GL_INVALID_OPERATION, GL_VERTEX_SHADER, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_RGB10_A2, GL_UNIFORM_OFFSET, GL_UNSIGNED_SHORT_5_6_5, GL_RG16F, GL_TRUE, GL_RG, GL_STENCIL_REF, GL_ONE_MINUS_SRC1_COLOR, GL_RGBA8I, GL_READ_ONLY, GL_INVALID_ENUM, GL_TINT, GL_OR_REVERSE, GL_DRAW_BUFFER12, GL_INT_SAMPLER_BUFFER, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_HEIGHT, GL_LINE_LOOP, GL_UNSIGNED_SHORT_5_5_5_1, GL_STENCIL_BACK_REF, GL_OUT_OF_MEMORY, GL_ZERO, GL_COLOR_BUFFER_BIT, GL_VERTEX_ATTRIB_ARRAY_STRIDE, GL_FRAGMENT_SHADER, GL_ELEMENT_ARRAY_BUFFER_BINDING, GL_LAST_VERTEX_CONVENTION, GL_RGB5, GL_TEXTURE_MAX_LEVEL, GL_MAP_WRITE_BIT, GL_QUERY_BY_REGION_NO_WAIT, GL_OR_INVERTED, GL_ONE_MINUS_CONSTANT_COLOR, GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, GL_SIGNED_NORMALIZED, GL_BUFFER_MAP_OFFSET, GL_CONTEXT_COMPATIBILITY_PROFILE_BIT, GL_STENCIL_BUFFER_BIT, GL_SAMPLE_COVERAGE, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, GL_BLEND_DST_ALPHA, GL_ATTACHED_SHADERS, GL_BLEND_EQUATION, GL_POLYGON_OFFSET_UNITS, GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, GL_FASTEST, GL_BOOL, GL_NEAREST, GL_REPLACE, GL_PACK_SKIP_IMAGES, GL_DRAW_BUFFER11, GL_FRONT, GL_POLYGON_OFFSET_POINT, GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION, GL_MAP_INVALIDATE_BUFFER_BIT, GL_RG16, GL_R8I, GL_SRGB, GL_VERTEX_ATTRIB_ARRAY_ENABLED, GL_TUNSIGNED_BYTE, GL_CLAMP_TO_EDGE, GL_TRANSFORM_FEEDBACK_BUFFER_START, GL_SAMPLER_1D_ARRAY_SHADOW, GL_TEXTURE_2D, GL_LINE_STRIP_ADJACENCY, GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT, GL_BLEND_SRC_ALPHA, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_SAMPLER_1D, GL_SAMPLER_1D_SHADOW, GL_MAX_DRAW_BUFFERS, GL_COMPRESSED_SRGB, GL_KEEP, GL_UNSIGNED_BYTE_2_3_3_REV, GL_NEAREST_MIPMAP_NEAREST, GL_RENDERBUFFER_ALPHA_SIZE, GL_RENDERBUFFER_DEPTH_SIZE, GL_REPEAT, GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, GL_SRGB8, GL_DRAW_BUFFER5, GL_LINE_WIDTH_GRANULARITY, GL_RENDERBUFFER_BINDING, GL_INFO_LOG_LENGTH, GL_CLAMP_TO_BORDER, GL_SAMPLES_PASSED, GL_RENDERBUFFER_HEIGHT, GL_TRIANGLE_STRIP_ADJACENCY, GL_MAX_COMBINED_UNIFORM_BLOCKS, GL_MAX_3D_TEXTURE_SIZE, GL_FLOAT_VEC2, GL_XOR, GL_FUNC_REVERSE_SUBTRACT, GL_VALIDATE_STATUS, GL_RGB5_A1, GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, GL_UNIFORM_BLOCK_DATA_SIZE, GL_EXTENSIONS, GL_DRAW_FRAMEBUFFER, GL_UNSIGNED_INT_8_8_8_8, GL_BOOL_VEC3, GL_FLOAT_MAT3x4, GL_LINE_WIDTH_RANGE, GL_STREAM_READ, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_SAMPLE_POSITION, GL_STENCIL_FUNC, GL_LINE_STRIP, GL_RED, GL_TEXTURE_BLUE_SIZE, GL_STATIC_COPY, GL_CONSTANT_ALPHA, GL_TEXTURE_BINDING_2D, GL_TEXTURE_INTERNAL_FORMAT, GL_TEXTURE_BINDING_1D, GL_TIME_ELAPSED, GL_ONE, GL_RGBA8, GL_MAX_VERTEX_UNIFORM_BLOCKS, GL_RGBA2, GL_SMOOTH_LINE_WIDTH_RANGE, GL_UNIFORM_SIZE, GL_COPY_INVERTED, GL_TEXTURE_BINDING_CUBE_MAP, GL_ONE_MINUS_CONSTANT_ALPHA, GL_FLOAT_MAT3x2, GL_MAX_TEXTURE_IMAGE_UNITS, GL_BACK, GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER, GL_RGB32I, GL_STENCIL_BACK_FAIL, GL_POLYGON_MODE, GL_POLYGON_OFFSET_FILL, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_SAMPLER_2D_SHADOW, GL_ANY_SAMPLES_PASSED, GL_TEXTURE_BLUE_TYPE, GL_STENCIL_TEST, GL_QUERY_NO_WAIT, GL_RGB8, GL_RENDERBUFFER_INTERNAL_FORMAT, GL_BUFFER_MAP_POINTER, GL_TEXTURE_SWIZZLE_RGBA, GL_TEXTURE_RECTANGLE, GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS, GL_UNSIGNED_INT_VEC4, GL_DEPTH_STENCIL_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, GL_ACTIVE_UNIFORM_BLOCKS, GL_STENCIL_INDEX4, GL_SAMPLER_2D_ARRAY, GL_MAX_VARYING_COMPONENTS, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, GL_SAMPLER_BUFFER, GL_INVALID_INDEX, GL_PACK_SKIP_ROWS, GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, GL_UNSIGNED_INT_SAMPLER_CUBE, GL_DITHER, GL_UNIFORM_BLOCK_NAME_LENGTH, GL_COMPILE_STATUS, GL_NOOP, GL_FALSE, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, GL_FLOAT_MAT4x3, GL_DEPTH_COMPONENT, GL_MAX_TEXTURE_BUFFER_SIZE, GL_RED_INTEGER, GL_DRAW_BUFFER15, GL_MULTISAMPLE, GL_POLYGON_SMOOTH_HINT, GL_RGB16, GL_BLEND_SRC_RGB, GL_VERTEX_ATTRIB_ARRAY_SIZE, GL_DRAW_BUFFER7, GL_DRAW_BUFFER13, GL_SUBPIXEL_BITS, GL_FRAMEBUFFER_COMPLETE, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, GL_PACK_IMAGE_HEIGHT, GL_PACK_ALIGNMENT, GL_BGR_INTEGER, GL_PROXY_TEXTURE_2D, GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_UNPACK_SWAP_BYTES, GL_SAMPLER_2D, GL_UNIFORM_BLOCK_INDEX, GL_LINES, GL_GREATER, GL_QUERY_BY_REGION_WAIT, GL_CURRENT_PROGRAM, GL_COMPRESSED_RG_RGTC2, GL_TIMESTAMP, GL_FRAMEBUFFER_SRGB, GL_INCR_WRAP, GL_UNSIGNED_BYTE_3_3_2, GL_MAX_UNIFORM_BLOCK_SIZE, GL_DEPTH_CLAMP, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, GL_NEAREST_MIPMAP_LINEAR, GL_BGRA_INTEGER, gl_enum, GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_POLYGON_OFFSET_FACTOR, GL_BUFFER_ACCESS, GlShort, GlClampd, GlInt64, GlUshort, GlBitfield, GlSizeiptrArb, GlBool, GlHalfArb, ==, GlInt64Ext, GlHandleArb, GlUint, GlUint64Ext, GlHalfNv, GlUint64, GlInt, GlCharArb, gl_types, GlSizeiptr, GlEglImageOes, GlChar, GlClampf, GlUbyte, GlEnum, GlHalf, GlDouble, GlFloat, GlSizei, GlVdpauSurfaceNv, GlClampx, GlFixed, GlIntptrArb, GlVoid, GlByte, GlIntptr, GlSync