logo
Expand description

Supported Features:

  • global_loader: Include all mechanisms necessary for calling GL using global functions.
  • struct_loader: Include all mechanisms necessary for calling GL as methods on a struct.
  • debug_trace_calls: if cfg!(debug_assertions), any call to a GL function will trace! what was called and with what args.
  • debug_automatic_glGetError: If cfg!(debug_assertions), this will automatically call glGetError after every call to any other GL function. If an error code occurs it’s shown via error! along with the name of the fn that had the error.
  • log: imports trace! and error! macros from the log crate. Otherwise they just call println! and eprintln! respectively.
  • chlorine: gets all C types from the chlorine crate (which is no_std friendly). Otherwise they will be imported from std::os::raw.
  • bytemuck: Adds support for the bytemuck crate, mostly in the form of bytemuck::Zeroable on GlFns.
  • inline: Tags all GL calls as #[inline].
  • inline_always: Tags all GL calls as #[inline(always)]. This will effectively override the inline feature.

The crate is no_std friendly by default, but features above can end up requiring std to be available.

GL Loaders

The docs for this crate hosted on docs.rs generate both the global_loader and struct_loader documentation for sake of completeness.

However, you are generally expected to use only one loader style in any particular project.

Each loader style has its own small advantages:

  • The global_loader stores the GL fn pointers in static AtomicPtr values.
    • Call load_global_gl_with to initialize the pointers.
    • Each GL fn is available as a global fn under its standard name, eg glGetError().
    • This lets you call GL functions from anywhere at all, and it’s how you might expect to use GL if you have a C background.
    • Being able to call GL from anywhere makes it easy to write Drop impls, among other things. In both styles, if you call a fn that isn’t loaded you will get a panic. This generally only happens if the context doesn’t fully support the GL version. You can check if a GL command is loaded or not before actually calling it by adding _is_loaded to the name of the command. In other words, glGetError_is_loaded to check if glGetError is globally loaded, and gl.GetError_is_loaded to check if it’s loaded in a GlFns. All of the “_is_loaded” functions are hidden in the generated docs just to keep things tidy, but they’re there.

Safety

In general, there’s many ways that GL can go wrong.

For the purposes of this library, it’s important to focus on the fact that:

  • Initially all functions are None pointers. If a fn is called when it’s in a None state then you’ll get a panic (reminder: a panic is safe).
  • You can load pointers from the current GL context (described above).
    • These pointers are technically context specific, though in practice different contexts for the same graphics driver often all share the same fn pointers.
    • The loader has no way to verify that pointers it gets are actually pointers to the correct functions, it just trusts what you tell it.
  • Since loading a fn pointer transitions the world from “it will definitely (safely) panic to call that GL command” to “it might be UB to call that GL command (even with the correct arguments)”, the act of simply loading a fn pointer is itself considered to be unsafe.
  • Individual GL commands are generally safe to use once they’ve been properly loaded for the current context, but this crate doesn’t attempt to sort out what is safe and what’s not. All GL commands are blanket marked as being unsafe. It’s up to you to try and manage this unsafety! Sorry, but this crate just does what you tell it to.

Modules

Contains functions for using the global GL loader.

Functions

glActiveShaderProgram(pipeline, program) pipeline class: program pipeline program class: program

glActiveTexture(texture) texture group: TextureUnit

glAttachShader(program, shader) program class: program shader class: shader

glBeginQuery(target, id) target group: QueryTarget id class: query

glBeginTransformFeedback(primitiveMode) primitiveMode group: PrimitiveType

glBindAttribLocation(program, index, name) program class: program

glBindBuffer(target, buffer) target group: BufferTargetARB buffer class: buffer

glBindBufferBase(target, index, buffer) target group: BufferTargetARB buffer class: buffer

glBindBufferRange(target, index, buffer, offset, size) target group: BufferTargetARB buffer class: buffer offset group: BufferOffset size group: BufferSize

glBindFramebuffer(target, framebuffer) target group: FramebufferTarget framebuffer class: framebuffer

glBindImageTexture(unit, texture, level, layered, layer, access, format) texture class: texture access group: BufferAccessARB format group: InternalFormat

glBindProgramPipeline(pipeline) pipeline class: program pipeline

glBindRenderbuffer(target, renderbuffer) target group: RenderbufferTarget renderbuffer class: renderbuffer

glBindSampler(unit, sampler) sampler class: sampler

glBindTexture(target, texture) target group: TextureTarget texture group: Texture texture class: texture

glBindTransformFeedback(target, id) target group: BindTransformFeedbackTarget id class: transform feedback

glBindVertexArray(array) array class: vertex array

glBindVertexBuffer(bindingindex, buffer, offset, stride) buffer class: buffer offset group: BufferOffset

glBlendColor(red, green, blue, alpha) red group: ColorF green group: ColorF blue group: ColorF alpha group: ColorF

glBlendEquation(mode) mode group: BlendEquationModeEXT

glBlendEquationSeparate(modeRGB, modeAlpha) modeRGB group: BlendEquationModeEXT modeAlpha group: BlendEquationModeEXT

glBlendEquationSeparatei(buf, modeRGB, modeAlpha) modeRGB group: BlendEquationModeEXT modeAlpha group: BlendEquationModeEXT

glBlendEquationi(buf, mode) mode group: BlendEquationModeEXT

glBlendFunc(sfactor, dfactor) sfactor group: BlendingFactor dfactor group: BlendingFactor

glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha) sfactorRGB group: BlendingFactor dfactorRGB group: BlendingFactor sfactorAlpha group: BlendingFactor dfactorAlpha group: BlendingFactor

glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha) srcRGB group: BlendingFactor dstRGB group: BlendingFactor srcAlpha group: BlendingFactor dstAlpha group: BlendingFactor

glBlendFunci(buf, src, dst) src group: BlendingFactor dst group: BlendingFactor

glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter) mask group: ClearBufferMask filter group: BlitFramebufferFilter

glBufferData(target, size, data, usage) target group: BufferTargetARB size group: BufferSize data len: size usage group: BufferUsageARB

glBufferSubData(target, offset, size, data) target group: BufferTargetARB offset group: BufferOffset size group: BufferSize data len: size

glCheckFramebufferStatus(target) target group: FramebufferTarget return value group: FramebufferStatus

glClear(mask) mask group: ClearBufferMask

glClearBufferfi(buffer, drawbuffer, depth, stencil) buffer group: Buffer drawbuffer group: DrawBufferName

glClearBufferfv(buffer, drawbuffer, value) buffer group: Buffer drawbuffer group: DrawBufferName value len: COMPSIZE(buffer)

glClearBufferiv(buffer, drawbuffer, value) buffer group: Buffer drawbuffer group: DrawBufferName value len: COMPSIZE(buffer)

glClearBufferuiv(buffer, drawbuffer, value) buffer group: Buffer drawbuffer group: DrawBufferName value len: COMPSIZE(buffer)

glClearColor(red, green, blue, alpha) red group: ColorF green group: ColorF blue group: ColorF alpha group: ColorF

glClearStencil(s) s group: StencilValue

glClientWaitSync(sync, flags, timeout) sync group: sync sync class: sync flags group: SyncObjectMask return value group: SyncStatus

glColorMask(red, green, blue, alpha)

glColorMaski(index, r, g, b, a)

glCompileShader(shader) shader class: shader

glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data) target group: TextureTarget level group: CheckedInt32 internalformat group: InternalFormat border group: CheckedInt32 data group: CompressedTextureARB data len: imageSize

glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data) target group: TextureTarget level group: CheckedInt32 internalformat group: InternalFormat border group: CheckedInt32 data group: CompressedTextureARB data len: imageSize

glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data) target group: TextureTarget level group: CheckedInt32 xoffset group: CheckedInt32 yoffset group: CheckedInt32 format group: PixelFormat data group: CompressedTextureARB data len: imageSize

glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) target group: TextureTarget level group: CheckedInt32 xoffset group: CheckedInt32 yoffset group: CheckedInt32 zoffset group: CheckedInt32 format group: PixelFormat data group: CompressedTextureARB data len: imageSize

glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size) readTarget group: CopyBufferSubDataTarget writeTarget group: CopyBufferSubDataTarget readOffset group: BufferOffset writeOffset group: BufferOffset size group: BufferSize

glCopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth) srcTarget group: CopyImageSubDataTarget dstTarget group: CopyImageSubDataTarget

glCopyTexImage2D(target, level, internalformat, x, y, width, height, border) target group: TextureTarget level group: CheckedInt32 internalformat group: InternalFormat x group: WinCoord y group: WinCoord border group: CheckedInt32

glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height) target group: TextureTarget level group: CheckedInt32 xoffset group: CheckedInt32 yoffset group: CheckedInt32 x group: WinCoord y group: WinCoord

glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height) target group: TextureTarget level group: CheckedInt32 xoffset group: CheckedInt32 yoffset group: CheckedInt32 zoffset group: CheckedInt32 x group: WinCoord y group: WinCoord

glCreateProgram() return value class: program

glCreateShader(type_) type_ group: ShaderType return value class: shader

glCreateShaderProgramv(type_, count, strings) type_ group: ShaderType strings len: count return value class: program

glCullFace(mode) mode group: CullFaceMode

glDebugMessageControl(source, type_, severity, count, ids, enabled) source group: DebugSource type_ group: DebugType severity group: DebugSeverity ids len: count

glDebugMessageInsert(source, type_, id, severity, length, buf) source group: DebugSource type_ group: DebugType severity group: DebugSeverity buf len: COMPSIZE(buf,length)

glDeleteBuffers(n, buffers) buffers len: n buffers class: buffer

glDeleteFramebuffers(n, framebuffers) framebuffers len: n framebuffers class: framebuffer

glDeleteProgram(program) program class: program

glDeleteProgramPipelines(n, pipelines) pipelines len: n pipelines class: program pipeline

glDeleteQueries(n, ids) ids len: n ids class: query

glDeleteRenderbuffers(n, renderbuffers) renderbuffers len: n renderbuffers class: renderbuffer

glDeleteSamplers(count, samplers) samplers len: count samplers class: sampler

glDeleteShader(shader) shader class: shader

glDeleteSync(sync) sync group: sync sync class: sync

glDeleteTextures(n, textures) textures group: Texture textures len: n textures class: texture

glDeleteTransformFeedbacks(n, ids) ids len: n ids class: transform feedback

glDeleteVertexArrays(n, arrays) arrays len: n arrays class: vertex array

glDepthFunc(func) func group: DepthFunction

glDetachShader(program, shader) program class: program shader class: shader

glDisable(cap) cap group: EnableCap

glDisablei(target, index) target group: EnableCap

glDispatchCompute(num_groups_x, num_groups_y, num_groups_z)

glDispatchComputeIndirect(indirect) indirect group: BufferOffset

glDrawArrays(mode, first, count) mode group: PrimitiveType

glDrawArraysIndirect(mode, indirect) mode group: PrimitiveType

glDrawArraysInstanced(mode, first, count, instancecount) mode group: PrimitiveType

glDrawBuffers(n, bufs) bufs group: DrawBufferMode bufs len: n

glDrawElements(mode, count, type_, indices) mode group: PrimitiveType type_ group: DrawElementsType indices len: COMPSIZE(count,type)

glDrawElementsBaseVertex(mode, count, type_, indices, basevertex) mode group: PrimitiveType type_ group: DrawElementsType indices len: COMPSIZE(count,type)

glDrawElementsIndirect(mode, type_, indirect) mode group: PrimitiveType type_ group: DrawElementsType

glDrawElementsInstanced(mode, count, type_, indices, instancecount) mode group: PrimitiveType type_ group: DrawElementsType indices len: COMPSIZE(count,type)

glDrawElementsInstancedBaseVertex(mode, count, type_, indices, instancecount, basevertex) mode group: PrimitiveType type_ group: DrawElementsType indices len: COMPSIZE(count,type)

glDrawRangeElements(mode, start, end, count, type_, indices) mode group: PrimitiveType type_ group: DrawElementsType indices len: COMPSIZE(count,type)

glDrawRangeElementsBaseVertex(mode, start, end, count, type_, indices, basevertex) mode group: PrimitiveType type_ group: DrawElementsType indices len: COMPSIZE(count,type)

glEnable(cap) cap group: EnableCap

glEnablei(target, index) target group: EnableCap

glEndQuery(target) target group: QueryTarget

glFenceSync(condition, flags) condition group: SyncCondition flags group: SyncBehaviorFlags return value group: sync return value class: sync

glFlushMappedBufferRange(target, offset, length) target group: BufferTargetARB offset group: BufferOffset length group: BufferSize

glFramebufferParameteri(target, pname, param) target group: FramebufferTarget pname group: FramebufferParameterName

glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer) target group: FramebufferTarget attachment group: FramebufferAttachment renderbuffertarget group: RenderbufferTarget renderbuffer class: renderbuffer

glFramebufferTexture(target, attachment, texture, level) target group: FramebufferTarget attachment group: FramebufferAttachment texture class: texture

glFramebufferTexture2D(target, attachment, textarget, texture, level) target group: FramebufferTarget attachment group: FramebufferAttachment textarget group: TextureTarget texture class: texture

glFramebufferTextureLayer(target, attachment, texture, level, layer) target group: FramebufferTarget attachment group: FramebufferAttachment texture group: Texture texture class: texture level group: CheckedInt32 layer group: CheckedInt32

glFrontFace(mode) mode group: FrontFaceDirection

glGenBuffers(n, buffers) buffers len: n buffers class: buffer

glGenFramebuffers(n, framebuffers) framebuffers len: n framebuffers class: framebuffer

glGenProgramPipelines(n, pipelines) pipelines len: n pipelines class: program pipeline

glGenQueries(n, ids) ids len: n ids class: query

glGenRenderbuffers(n, renderbuffers) renderbuffers len: n renderbuffers class: renderbuffer

glGenSamplers(count, samplers) samplers len: count samplers class: sampler

glGenTextures(n, textures) textures group: Texture textures len: n textures class: texture

glGenTransformFeedbacks(n, ids) ids len: n ids class: transform feedback

glGenVertexArrays(n, arrays) arrays len: n arrays class: vertex array

glGenerateMipmap(target) target group: TextureTarget

glGetActiveAttrib(program, index, bufSize, length, size, type_, name) program class: program length len: 1 size len: 1 type_ group: AttributeType type_ len: 1 name len: bufSize

glGetActiveUniform(program, index, bufSize, length, size, type_, name) program class: program length len: 1 size len: 1 type_ group: UniformType type_ len: 1 name len: bufSize

glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName) program class: program length len: 1 uniformBlockName len: bufSize

glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params) program class: program pname group: UniformBlockPName params len: COMPSIZE(program,uniformBlockIndex,pname)

glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params) program class: program uniformIndices len: uniformCount pname group: UniformPName params len: COMPSIZE(uniformCount,pname)

glGetAttachedShaders(program, maxCount, count, shaders) program class: program count len: 1 shaders len: maxCount shaders class: shader

glGetAttribLocation(program, name) program class: program

glGetBooleani_v(target, index, data) target group: BufferTargetARB data len: COMPSIZE(target)

glGetBooleanv(pname, data) pname group: GetPName data len: COMPSIZE(pname)

glGetBufferParameteri64v(target, pname, params) target group: BufferTargetARB pname group: BufferPNameARB params len: COMPSIZE(pname)

glGetBufferParameteriv(target, pname, params) target group: BufferTargetARB pname group: BufferPNameARB params len: COMPSIZE(pname)

glGetBufferPointerv(target, pname, params) target group: BufferTargetARB pname group: BufferPointerNameARB params len: 1

glGetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog) sources group: DebugSource sources len: count types group: DebugType types len: count ids len: count severities group: DebugSeverity severities len: count lengths len: count messageLog len: bufSize

glGetError() return value group: ErrorCode

glGetFloatv(pname, data) pname group: GetPName data len: COMPSIZE(pname)

glGetFragDataLocation(program, name) program class: program name len: COMPSIZE(name)

glGetFramebufferAttachmentParameteriv(target, attachment, pname, params) target group: FramebufferTarget attachment group: FramebufferAttachment pname group: FramebufferAttachmentParameterName params len: COMPSIZE(pname)

glGetFramebufferParameteriv(target, pname, params) target group: FramebufferTarget pname group: FramebufferAttachmentParameterName params len: COMPSIZE(pname)

glGetGraphicsResetStatus() return value group: GraphicsResetStatus

glGetInteger64i_v(target, index, data) target group: GetPName data len: COMPSIZE(target)

glGetInteger64v(pname, data) pname group: GetPName data len: COMPSIZE(pname)

glGetIntegeri_v(target, index, data) target group: GetPName data len: COMPSIZE(target)

glGetIntegerv(pname, data) pname group: GetPName data len: COMPSIZE(pname)

glGetInternalformativ(target, internalformat, pname, count, params) target group: TextureTarget internalformat group: InternalFormat pname group: InternalFormatPName params len: count

glGetMultisamplefv(pname, index, val) pname group: GetMultisamplePNameNV val len: COMPSIZE(pname)

glGetObjectLabel(identifier, name, bufSize, length, label) identifier group: ObjectIdentifier length len: 1 label len: bufSize

glGetObjectPtrLabel(ptr, bufSize, length, label) length len: 1 label len: bufSize

glGetPointerv(pname, params) pname group: GetPointervPName params len: 1

glGetProgramBinary(program, bufSize, length, binaryFormat, binary) program class: program length len: 1 binaryFormat len: 1 binary len: bufSize

glGetProgramInfoLog(program, bufSize, length, infoLog) program class: program length len: 1 infoLog len: bufSize

glGetProgramInterfaceiv(program, programInterface, pname, params) program class: program programInterface group: ProgramInterface pname group: ProgramInterfacePName params len: COMPSIZE(pname)

glGetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog) pipeline class: program pipeline length len: 1 infoLog len: bufSize

glGetProgramPipelineiv(pipeline, pname, params) pipeline class: program pipeline pname group: PipelineParameterName params len: COMPSIZE(pname)

glGetProgramResourceIndex(program, programInterface, name) program class: program programInterface group: ProgramInterface name len: COMPSIZE(name)

glGetProgramResourceLocation(program, programInterface, name) program class: program programInterface group: ProgramInterface name len: COMPSIZE(name)

glGetProgramResourceName(program, programInterface, index, bufSize, length, name) program class: program programInterface group: ProgramInterface length len: 1 name len: bufSize

glGetProgramResourceiv(program, programInterface, index, propCount, props, count, length, params) program class: program programInterface group: ProgramInterface props group: ProgramResourceProperty props len: propCount length len: 1 params len: count

glGetProgramiv(program, pname, params) program class: program pname group: ProgramPropertyARB params len: COMPSIZE(pname)

glGetQueryObjectuiv(id, pname, params) id class: query pname group: QueryObjectParameterName params len: COMPSIZE(pname)

glGetQueryiv(target, pname, params) target group: QueryTarget pname group: QueryParameterName params len: COMPSIZE(pname)

glGetRenderbufferParameteriv(target, pname, params) target group: RenderbufferTarget pname group: RenderbufferParameterName params len: COMPSIZE(pname)

glGetSamplerParameterIiv(sampler, pname, params) sampler class: sampler pname group: SamplerParameterI params len: COMPSIZE(pname)

glGetSamplerParameterIuiv(sampler, pname, params) sampler class: sampler pname group: SamplerParameterI params len: COMPSIZE(pname)

glGetSamplerParameterfv(sampler, pname, params) sampler class: sampler pname group: SamplerParameterF params len: COMPSIZE(pname)

glGetSamplerParameteriv(sampler, pname, params) sampler class: sampler pname group: SamplerParameterI params len: COMPSIZE(pname)

glGetShaderInfoLog(shader, bufSize, length, infoLog) shader class: shader length len: 1 infoLog len: bufSize

glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision) shadertype group: ShaderType precisiontype group: PrecisionType range len: 2 precision len: 1

glGetShaderSource(shader, bufSize, length, source) shader class: shader length len: 1 source len: bufSize

glGetShaderiv(shader, pname, params) shader class: shader pname group: ShaderParameterName params len: COMPSIZE(pname)

glGetString(name) name group: StringName return value group: String

glGetStringi(name, index) name group: StringName return value group: String

glGetSynciv(sync, pname, count, length, values) sync group: sync sync class: sync pname group: SyncParameterName length len: 1 values len: count

glGetTexLevelParameterfv(target, level, pname, params) target group: TextureTarget level group: CheckedInt32 pname group: GetTextureParameter params len: COMPSIZE(pname)

glGetTexLevelParameteriv(target, level, pname, params) target group: TextureTarget level group: CheckedInt32 pname group: GetTextureParameter params len: COMPSIZE(pname)

glGetTexParameterIiv(target, pname, params) target group: TextureTarget pname group: GetTextureParameter params len: COMPSIZE(pname)

glGetTexParameterIuiv(target, pname, params) target group: TextureTarget pname group: GetTextureParameter params len: COMPSIZE(pname)

glGetTexParameterfv(target, pname, params) target group: TextureTarget pname group: GetTextureParameter params len: COMPSIZE(pname)

glGetTexParameteriv(target, pname, params) target group: TextureTarget pname group: GetTextureParameter params len: COMPSIZE(pname)

glGetTransformFeedbackVarying(program, index, bufSize, length, size, type_, name) program class: program length len: 1 size len: 1 type_ group: AttributeType type_ len: 1 name len: bufSize

glGetUniformBlockIndex(program, uniformBlockName) program class: program uniformBlockName len: COMPSIZE()

glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices) program class: program uniformNames len: COMPSIZE(uniformCount) uniformIndices len: COMPSIZE(uniformCount)

glGetUniformLocation(program, name) program class: program

glGetUniformfv(program, location, params) program class: program params len: COMPSIZE(program,location)

glGetUniformiv(program, location, params) program class: program params len: COMPSIZE(program,location)

glGetUniformuiv(program, location, params) program class: program params len: COMPSIZE(program,location)

glGetVertexAttribIiv(index, pname, params) pname group: VertexAttribEnum params len: 1

glGetVertexAttribIuiv(index, pname, params) pname group: VertexAttribEnum params len: 1

glGetVertexAttribPointerv(index, pname, pointer) pname group: VertexAttribPointerPropertyARB pointer len: 1

glGetVertexAttribfv(index, pname, params) pname group: VertexAttribPropertyARB params len: 4

glGetVertexAttribiv(index, pname, params) pname group: VertexAttribPropertyARB params len: 4

glGetnUniformfv(program, location, bufSize, params) program class: program params len: bufSize / 4

glGetnUniformiv(program, location, bufSize, params) program class: program params len: bufSize / 4

glGetnUniformuiv(program, location, bufSize, params) program class: program params len: bufSize / 4

glHint(target, mode) target group: HintTarget mode group: HintMode

glInvalidateFramebuffer(target, numAttachments, attachments) target group: FramebufferTarget attachments group: InvalidateFramebufferAttachment attachments len: numAttachments

glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height) target group: FramebufferTarget attachments group: InvalidateFramebufferAttachment attachments len: numAttachments

glIsBuffer(buffer) buffer class: buffer

glIsEnabled(cap) cap group: EnableCap

glIsEnabledi(target, index) target group: EnableCap

glIsFramebuffer(framebuffer) framebuffer class: framebuffer

glIsProgram(program) program class: program

glIsProgramPipeline(pipeline) pipeline class: program pipeline

glIsQuery(id) id class: query

glIsRenderbuffer(renderbuffer) renderbuffer class: renderbuffer

glIsSampler(sampler) sampler class: sampler

glIsShader(shader) shader class: shader

glIsSync(sync) sync group: sync sync class: sync

glIsTexture(texture) texture group: Texture texture class: texture

glIsTransformFeedback(id) id class: transform feedback

glIsVertexArray(array) array class: vertex array

glLineWidth(width) width group: CheckedFloat32

glLinkProgram(program) program class: program

glMapBufferRange(target, offset, length, access) target group: BufferTargetARB offset group: BufferOffset length group: BufferSize access group: MapBufferAccessMask

glMemoryBarrier(barriers) barriers group: MemoryBarrierMask

glMemoryBarrierByRegion(barriers) barriers group: MemoryBarrierMask

glMinSampleShading(value) value group: ColorF

glObjectLabel(identifier, name, length, label) identifier group: ObjectIdentifier label len: COMPSIZE(label,length)

glObjectPtrLabel(ptr, length, label) label len: COMPSIZE(label,length)

glPatchParameteri(pname, value) pname group: PatchParameterName

glPixelStorei(pname, param) pname group: PixelStoreParameter param group: CheckedInt32

glPrimitiveBoundingBox(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW)

glProgramBinary(program, binaryFormat, binary, length) program class: program binary len: length

glProgramParameteri(program, pname, value) program class: program pname group: ProgramParameterPName

glProgramUniform1f(program, location, v0) program class: program

glProgramUniform1fv(program, location, count, value) program class: program value len: count

glProgramUniform1i(program, location, v0) program class: program

glProgramUniform1iv(program, location, count, value) program class: program value len: count

glProgramUniform1ui(program, location, v0) program class: program

glProgramUniform1uiv(program, location, count, value) program class: program value len: count

glProgramUniform2f(program, location, v0, v1) program class: program

glProgramUniform2fv(program, location, count, value) program class: program value len: count*2

glProgramUniform2i(program, location, v0, v1) program class: program

glProgramUniform2iv(program, location, count, value) program class: program value len: count*2

glProgramUniform2ui(program, location, v0, v1) program class: program

glProgramUniform2uiv(program, location, count, value) program class: program value len: count*2

glProgramUniform3f(program, location, v0, v1, v2) program class: program

glProgramUniform3fv(program, location, count, value) program class: program value len: count*3

glProgramUniform3i(program, location, v0, v1, v2) program class: program

glProgramUniform3iv(program, location, count, value) program class: program value len: count*3

glProgramUniform3ui(program, location, v0, v1, v2) program class: program

glProgramUniform3uiv(program, location, count, value) program class: program value len: count*3

glProgramUniform4f(program, location, v0, v1, v2, v3) program class: program

glProgramUniform4fv(program, location, count, value) program class: program value len: count*4

glProgramUniform4i(program, location, v0, v1, v2, v3) program class: program

glProgramUniform4iv(program, location, count, value) program class: program value len: count*4

glProgramUniform4ui(program, location, v0, v1, v2, v3) program class: program

glProgramUniform4uiv(program, location, count, value) program class: program value len: count*4

glProgramUniformMatrix2fv(program, location, count, transpose, value) program class: program value len: count*4

glProgramUniformMatrix2x3fv(program, location, count, transpose, value) program class: program value len: count*6

glProgramUniformMatrix2x4fv(program, location, count, transpose, value) program class: program value len: count*8

glProgramUniformMatrix3fv(program, location, count, transpose, value) program class: program value len: count*9

glProgramUniformMatrix3x2fv(program, location, count, transpose, value) program class: program value len: count*6

glProgramUniformMatrix3x4fv(program, location, count, transpose, value) program class: program value len: count*12

glProgramUniformMatrix4fv(program, location, count, transpose, value) program class: program value len: count*16

glProgramUniformMatrix4x2fv(program, location, count, transpose, value) program class: program value len: count*8

glProgramUniformMatrix4x3fv(program, location, count, transpose, value) program class: program value len: count*12

glPushDebugGroup(source, id, length, message) source group: DebugSource message len: COMPSIZE(message,length)

glReadBuffer(src) src group: ReadBufferMode

glReadPixels(x, y, width, height, format, type_, pixels) x group: WinCoord y group: WinCoord format group: PixelFormat type_ group: PixelType pixels len: COMPSIZE(format,type,width,height)

glReadnPixels(x, y, width, height, format, type_, bufSize, data) format group: PixelFormat type_ group: PixelType data len: bufSize

glRenderbufferStorage(target, internalformat, width, height) target group: RenderbufferTarget internalformat group: InternalFormat

glRenderbufferStorageMultisample(target, samples, internalformat, width, height) target group: RenderbufferTarget internalformat group: InternalFormat

glSamplerParameterIiv(sampler, pname, param) sampler class: sampler pname group: SamplerParameterI param len: COMPSIZE(pname)

glSamplerParameterIuiv(sampler, pname, param) sampler class: sampler pname group: SamplerParameterI param len: COMPSIZE(pname)

glSamplerParameterf(sampler, pname, param) sampler class: sampler pname group: SamplerParameterF

glSamplerParameterfv(sampler, pname, param) sampler class: sampler pname group: SamplerParameterF param len: COMPSIZE(pname)

glSamplerParameteri(sampler, pname, param) sampler class: sampler pname group: SamplerParameterI

glSamplerParameteriv(sampler, pname, param) sampler class: sampler pname group: SamplerParameterI param len: COMPSIZE(pname)

glScissor(x, y, width, height) x group: WinCoord y group: WinCoord

glShaderBinary(count, shaders, binaryFormat, binary, length) shaders len: count shaders class: shader binaryFormat group: ShaderBinaryFormat binary len: length

glShaderSource(shader, count, string, length) shader class: shader string len: count length len: count

glStencilFunc(func, ref_, mask) func group: StencilFunction ref_ group: StencilValue mask group: MaskedStencilValue

glStencilFuncSeparate(face, func, ref_, mask) face group: StencilFaceDirection func group: StencilFunction ref_ group: StencilValue mask group: MaskedStencilValue

glStencilMask(mask) mask group: MaskedStencilValue

glStencilMaskSeparate(face, mask) face group: StencilFaceDirection mask group: MaskedStencilValue

glStencilOp(fail, zfail, zpass) fail group: StencilOp zfail group: StencilOp zpass group: StencilOp

glStencilOpSeparate(face, sfail, dpfail, dppass) face group: StencilFaceDirection sfail group: StencilOp dpfail group: StencilOp dppass group: StencilOp

glTexBuffer(target, internalformat, buffer) target group: TextureTarget internalformat group: SizedInternalFormat buffer class: buffer

glTexBufferRange(target, internalformat, buffer, offset, size) target group: TextureTarget internalformat group: SizedInternalFormat buffer class: buffer offset group: BufferOffset size group: BufferSize

glTexImage2D(target, level, internalformat, width, height, border, format, type_, pixels) target group: TextureTarget level group: CheckedInt32 internalformat group: InternalFormat border group: CheckedInt32 format group: PixelFormat type_ group: PixelType pixels len: COMPSIZE(format,type,width,height)

glTexImage3D(target, level, internalformat, width, height, depth, border, format, type_, pixels) target group: TextureTarget level group: CheckedInt32 internalformat group: InternalFormat border group: CheckedInt32 format group: PixelFormat type_ group: PixelType pixels len: COMPSIZE(format,type,width,height,depth)

glTexParameterIiv(target, pname, params) target group: TextureTarget pname group: TextureParameterName params len: COMPSIZE(pname)

glTexParameterIuiv(target, pname, params) target group: TextureTarget pname group: TextureParameterName params len: COMPSIZE(pname)

glTexParameterf(target, pname, param) target group: TextureTarget pname group: TextureParameterName param group: CheckedFloat32

glTexParameterfv(target, pname, params) target group: TextureTarget pname group: TextureParameterName params group: CheckedFloat32 params len: COMPSIZE(pname)

glTexParameteri(target, pname, param) target group: TextureTarget pname group: TextureParameterName param group: CheckedInt32

glTexParameteriv(target, pname, params) target group: TextureTarget pname group: TextureParameterName params group: CheckedInt32 params len: COMPSIZE(pname)

glTexStorage2D(target, levels, internalformat, width, height) target group: TextureTarget internalformat group: SizedInternalFormat

glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations) target group: TextureTarget internalformat group: SizedInternalFormat

glTexStorage3D(target, levels, internalformat, width, height, depth) target group: TextureTarget internalformat group: SizedInternalFormat

glTexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations) target group: TextureTarget internalformat group: SizedInternalFormat

glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type_, pixels) target group: TextureTarget level group: CheckedInt32 xoffset group: CheckedInt32 yoffset group: CheckedInt32 format group: PixelFormat type_ group: PixelType pixels len: COMPSIZE(format,type,width,height)

glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels) target group: TextureTarget level group: CheckedInt32 xoffset group: CheckedInt32 yoffset group: CheckedInt32 zoffset group: CheckedInt32 format group: PixelFormat type_ group: PixelType pixels len: COMPSIZE(format,type,width,height,depth)

glTransformFeedbackVaryings(program, count, varyings, bufferMode) program class: program varyings len: count bufferMode group: TransformFeedbackBufferMode

glUniform1fv(location, count, value) value len: count*1

glUniform1iv(location, count, value) value len: count*1

glUniform1uiv(location, count, value) value len: count*1

glUniform2f(location, v0, v1)

glUniform2fv(location, count, value) value len: count*2

glUniform2i(location, v0, v1)

glUniform2iv(location, count, value) value len: count*2

glUniform2ui(location, v0, v1)

glUniform2uiv(location, count, value) value len: count*2

glUniform3f(location, v0, v1, v2)

glUniform3fv(location, count, value) value len: count*3

glUniform3i(location, v0, v1, v2)

glUniform3iv(location, count, value) value len: count*3

glUniform3ui(location, v0, v1, v2)

glUniform3uiv(location, count, value) value len: count*3

glUniform4f(location, v0, v1, v2, v3)

glUniform4fv(location, count, value) value len: count*4

glUniform4i(location, v0, v1, v2, v3)

glUniform4iv(location, count, value) value len: count*4

glUniform4ui(location, v0, v1, v2, v3)

glUniform4uiv(location, count, value) value len: count*4

glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding) program class: program

glUniformMatrix2fv(location, count, transpose, value) value len: count*4

glUniformMatrix2x3fv(location, count, transpose, value) value len: count*6

glUniformMatrix2x4fv(location, count, transpose, value) value len: count*8

glUniformMatrix3fv(location, count, transpose, value) value len: count*9

glUniformMatrix3x2fv(location, count, transpose, value) value len: count*6

glUniformMatrix3x4fv(location, count, transpose, value) value len: count*12

glUniformMatrix4fv(location, count, transpose, value) value len: count*16

glUniformMatrix4x2fv(location, count, transpose, value) value len: count*8

glUniformMatrix4x3fv(location, count, transpose, value) value len: count*12

glUnmapBuffer(target) target group: BufferTargetARB

glUseProgram(program) program class: program

glUseProgramStages(pipeline, stages, program) pipeline class: program pipeline stages group: UseProgramStageMask program class: program

glValidateProgram(program) program class: program

glValidateProgramPipeline(pipeline) pipeline class: program pipeline

glVertexAttrib3f(index, x, y, z) vector equivalent: glVertexAttrib3fv

glVertexAttrib4f(index, x, y, z, w) vector equivalent: glVertexAttrib4fv

glVertexAttribFormat(attribindex, size, type_, normalized, relativeoffset) type_ group: VertexAttribType

glVertexAttribI4i(index, x, y, z, w) vector equivalent: glVertexAttribI4iv

glVertexAttribI4ui(index, x, y, z, w) vector equivalent: glVertexAttribI4uiv

glVertexAttribIFormat(attribindex, size, type_, relativeoffset) type_ group: VertexAttribIType

glVertexAttribIPointer(index, size, type_, stride, pointer) type_ group: VertexAttribIType pointer len: COMPSIZE(size,type,stride)

glVertexAttribPointer(index, size, type_, normalized, stride, pointer) type_ group: VertexAttribPointerType pointer len: COMPSIZE(size,type,stride)

glViewport(x, y, width, height) x group: WinCoord y group: WinCoord

glWaitSync(sync, flags, timeout) sync group: sync sync class: sync flags group: SyncBehaviorFlags

Loads all global functions using the get_proc_address given.