GLGET(3G)

πŸ“¦
version 1.1 Β· 3 versions
, in centos-stream 9

πŸ’… glGet β€” your GLGET(3G) bestie ✨

🌸 NAME 🌸

glGet β€” return the value or values of a selected parameter. 🫢

πŸ’» C SPECIFICATION πŸ’»

okay so here's the whole function family, and yes, every single prototype is iconic in its own way:

void glGetBooleanv(GLenum pname, GLboolean * data);

void glGetDoublev(GLenum pname, GLdouble * data);

void glGetFloatv(GLenum pname, GLfloat * data);

void glGetIntegerv(GLenum pname, GLint * data);

void glGetInteger64v(GLenum pname, GLint64 * data);

void glGetBooleani_v(GLenum target, GLuint index, GLboolean * data);

void glGetIntegeri_v(GLenum target, GLuint index, GLint * data);

void glGetFloati_v(GLenum target, GLuint index, GLfloat * data);

void glGetDoublei_v(GLenum target, GLuint index, GLdouble * data);

void glGetInteger64i_v(GLenum target, GLuint index, GLint64 * data);

πŸŽ€ PARAMETERS πŸŽ€

  • pname β€” for the non-indexed versions of glGet, this is the parameter value you're asking for. The symbolic constants in the list below are accepted. πŸ’–
  • target β€” for the indexed versions of glGet, this is the parameter value you're asking for. The symbolic constants in the list below are accepted too.
  • index β€” the index of the particular element being queried. iykyk.
  • data β€” returns the value or values of the specified parameter. this is where the answer lands, bestie.

✨ DESCRIPTION ✨

These commands return values for simple state variables in GL. pname is a symbolic constant indicating the state variable to be returned, and data is a pointer to an array of the indicated type in which to place the returned data. no cap.

Type conversion is performed if data has a different type than the state variable value being requested. If glGetBooleanv is called, a floating-point (or integer) value is converted to GL_FALSE if and only if it is 0.0 (or 0). Otherwise, it is converted to GL_TRUE. If glGetIntegerv is called, boolean values are returned as GL_TRUE or GL_FALSE, and most floating-point values are rounded to the nearest integer value. Floating-point colors and normals, however, are returned with a linear mapping that maps 1.0 to the most positive representable integer value and -1.0 to the most negative representable integer value. If glGetFloatv or glGetDoublev is called, boolean values are returned as GL_TRUE or GL_FALSE, and integer values are converted to floating-point values. πŸ’…

The following symbolic constants are accepted by pname:


  • GL_ACTIVE_TEXTURE β€” data returns a single value indicating the active multitexture unit. The initial value is GL_TEXTURE0. See glActiveTexture().
  • GL_ALIASED_LINE_WIDTH_RANGE β€” data returns a pair of values indicating the range of widths supported for aliased lines. See glLineWidth().
  • GL_ARRAY_BUFFER_BINDING β€” data returns a single value, the name of the buffer object currently bound to the target GL_ARRAY_BUFFER. If no buffer object is bound to this target, 0 is returned. The initial value is 0. See glBindBuffer().
  • GL_BLEND β€” data returns a single boolean value indicating whether blending is enabled. The initial value is GL_FALSE. See glBlendFunc().
  • GL_BLEND_COLOR β€” data returns four values, the red, green, blue, and alpha values which are the components of the blend color. See glBlendColor().
  • GL_BLEND_DST_ALPHA β€” data returns one value, the symbolic constant identifying the alpha destination blend function. The initial value is GL_ZERO. See glBlendFunc() and glBlendFuncSeparate().
  • GL_BLEND_DST_RGB β€” data returns one value, the symbolic constant identifying the RGB destination blend function. The initial value is GL_ZERO. See glBlendFunc() and glBlendFuncSeparate().
  • GL_BLEND_EQUATION_RGB β€” data returns one value, a symbolic constant indicating whether the RGB blend equation is GL_FUNC_ADD, GL_FUNC_SUBTRACT, GL_FUNC_REVERSE_SUBTRACT, GL_MIN or GL_MAX. See glBlendEquationSeparate().
  • GL_BLEND_EQUATION_ALPHA β€” data returns one value, a symbolic constant indicating whether the Alpha blend equation is GL_FUNC_ADD, GL_FUNC_SUBTRACT, GL_FUNC_REVERSE_SUBTRACT, GL_MIN or GL_MAX. See glBlendEquationSeparate().
  • GL_BLEND_SRC_ALPHA β€” data returns one value, the symbolic constant identifying the alpha source blend function. The initial value is GL_ONE. See glBlendFunc() and glBlendFuncSeparate().
  • GL_BLEND_SRC_RGB β€” data returns one value, the symbolic constant identifying the RGB source blend function. The initial value is GL_ONE. See glBlendFunc() and glBlendFuncSeparate().
  • GL_COLOR_CLEAR_VALUE β€” data returns four values: the red, green, blue, and alpha values used to clear the color buffers. Integer values, if requested, are linearly mapped from the internal floating-point representation such that 1.0 returns the most positive representable integer value, and -1.0 returns the most negative representable integer value. The initial value is (0, 0, 0, 0). See glClearColor().
  • GL_COLOR_LOGIC_OP β€” data returns a single boolean value indicating whether a fragment's RGBA color values are merged into the framebuffer using a logical operation. The initial value is GL_FALSE. See glLogicOp().
  • GL_COLOR_WRITEMASK β€” data returns four boolean values: the red, green, blue, and alpha write enables for the color buffers. The initial value is (GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE). See glColorMask().
  • GL_COMPRESSED_TEXTURE_FORMATS β€” data returns a list of symbolic constants of length GL_NUM_COMPRESSED_TEXTURE_FORMATS indicating which compressed texture formats are available. See glCompressedTexImage2D().
  • GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS β€” data returns one value, the maximum number of active shader storage blocks that may be accessed by a compute shader.
  • GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS β€” data returns one value, the maximum total number of active shader storage blocks that may be accessed by all active shaders.
  • GL_MAX_COMPUTE_UNIFORM_BLOCKS β€” data returns one value, the maximum number of uniform blocks per compute shader. The value must be at least 14. See glUniformBlockBinding().
  • GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS β€” data returns one value, the maximum supported texture image units that can be used to access texture maps from the compute shader. The value may be at least 16. See glActiveTexture().
  • GL_MAX_COMPUTE_UNIFORM_COMPONENTS β€” data returns one value, the maximum number of individual floating-point, integer, or boolean values that can be held in uniform variable storage for a compute shader. The value must be at least 1024. See glUniform().
  • GL_MAX_COMPUTE_ATOMIC_COUNTERS β€” data returns a single value, the maximum number of atomic counters available to compute shaders.
  • GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS β€” data returns a single value, the maximum number of atomic counter buffers that may be accessed by a compute shader.
  • GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS β€” data returns one value, the number of words for compute shader uniform variables in all uniform blocks (including default). The value must be at least 1. See glUniform().
  • GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS β€” data returns one value, the number of invocations in a single local work group (i.e., the product of the three dimensions) that may be dispatched to a compute shader.
  • GL_MAX_COMPUTE_WORK_GROUP_COUNT β€” accepted by the indexed versions of glGet. data is the maximum number of work groups that may be dispatched to a compute shader. Indices 0, 1, and 2 correspond to the X, Y and Z dimensions, respectively.
  • GL_MAX_COMPUTE_WORK_GROUP_SIZE β€” accepted by the indexed versions of glGet. data is the maximum size of a work groups that may be used during compilation of a compute shader. Indices 0, 1, and 2 correspond to the X, Y and Z dimensions, respectively.
  • GL_DISPATCH_INDIRECT_BUFFER_BINDING β€” data returns a single value, the name of the buffer object currently bound to the target GL_DISPATCH_INDIRECT_BUFFER. If no buffer object is bound to this target, 0 is returned. The initial value is 0. See glBindBuffer().
  • GL_MAX_DEBUG_GROUP_STACK_DEPTH β€” data returns a single value, the maximum depth of the debug message group stack.
  • GL_DEBUG_GROUP_STACK_DEPTH β€” data returns a single value, the current depth of the debug message group stack.
  • GL_CONTEXT_FLAGS β€” data returns one value, the flags with which the context was created (such as debugging functionality).
  • GL_CULL_FACE β€” data returns a single boolean value indicating whether polygon culling is enabled. The initial value is GL_FALSE. See glCullFace().
  • GL_CULL_FACE_MODE β€” data returns a single value indicating the mode of polygon culling. The initial value is GL_BACK. See glCullFace().
  • GL_CURRENT_PROGRAM β€” data returns one value, the name of the program object that is currently active, or 0 if no program object is active. See glUseProgram().
  • GL_DEPTH_CLEAR_VALUE β€” data returns one value, the value that is used to clear the depth buffer. Integer values, if requested, are linearly mapped from the internal floating-point representation such that 1.0 returns the most positive representable integer value, and -1.0 returns the most negative representable integer value. The initial value is 1. See glClearDepth().
  • GL_DEPTH_FUNC β€” data returns one value, the symbolic constant that indicates the depth comparison function. The initial value is GL_LESS. See glDepthFunc().
  • GL_DEPTH_RANGE β€” data returns two values: the near and far mapping limits for the depth buffer. Integer values, if requested, are linearly mapped from the internal floating-point representation such that 1.0 returns the most positive representable integer value, and -1.0 returns the most negative representable integer value. The initial value is (0, 1). See glDepthRange().
  • GL_DEPTH_TEST β€” data returns a single boolean value indicating whether depth testing of fragments is enabled. The initial value is GL_FALSE. See glDepthFunc() and glDepthRange().
  • GL_DEPTH_WRITEMASK β€” data returns a single boolean value indicating if the depth buffer is enabled for writing. The initial value is GL_TRUE. See glDepthMask().
  • GL_DITHER β€” data returns a single boolean value indicating whether dithering of fragment colors and indices is enabled. The initial value is GL_TRUE.
  • GL_DOUBLEBUFFER β€” data returns a single boolean value indicating whether double buffering is supported.
  • GL_DRAW_BUFFER β€” data gives you back one value, a symbolic constant telling you which buffers are currently getting drawn to. Peep glDrawBuffer(). Initial value? GL_BACK if back buffers exist, otherwise it's GL_FRONT. πŸ’…
  • GL_DRAW_BUFFERi β€” data returns one value, a symbolic constant showing which buffers the matching output color is drawing into. See glDrawBuffers(). GL_DRAW_BUFFER0 starts out as GL_BACK if there are back buffers, else GL_FRONT. And every other output color's draw buffer starts at GL_NONE. periodt.
  • GL_DRAW_FRAMEBUFFER_BINDING β€” one value: the name of the framebuffer object currently bound to the GL_DRAW_FRAMEBUFFER target. Default framebuffer bound? Then this is zero. Initial value is zero. See glBindFramebuffer(). ✨
  • GL_READ_FRAMEBUFFER_BINDING β€” one value: the name of the framebuffer object currently bound to GL_READ_FRAMEBUFFER. If the default framebuffer is the one bound, this value is zero. Initial value: zero. See glBindFramebuffer().
  • GL_ELEMENT_ARRAY_BUFFER_BINDING β€” a single value, bestie: the name of the buffer object currently bound to the GL_ELEMENT_ARRAY_BUFFER target. Nothing bound there? You get 0 back. Initial value is 0. See glBindBuffer().
  • GL_FRAGMENT_SHADER_DERIVATIVE_HINT β€” one value, a symbolic constant for the derivative accuracy hint mode on fragment shaders. Starts at GL_DONT_CARE. See glHint(). πŸŽ€
  • GL_IMPLEMENTATION_COLOR_READ_FORMAT β€” a single GLenum value, telling you the implementation's preferred pixel data format. See glReadPixels().
  • GL_IMPLEMENTATION_COLOR_READ_TYPE β€” a single GLenum value, this time the implementation's preferred pixel data type. See glReadPixels().
  • GL_LINE_SMOOTH β€” a single boolean, yes/no on whether line antialiasing is on. Initial value GL_FALSE. See glLineWidth().
  • GL_LINE_SMOOTH_HINT β€” one value, a symbolic constant for the line antialiasing hint mode. Initial value GL_DONT_CARE. See glHint().
  • GL_LINE_WIDTH β€” one value: the line width, exactly like you set it with glLineWidth(). Initial value is 1. πŸ¦‹
  • GL_LAYER_PROVOKING_VERTEX β€” one value, the implementation-dependent vertex of a primitive used to pick the rendering layer. Lowkey a choose-your-own-adventure:
    • returns something equivalent to GL_PROVOKING_VERTEX β†’ the vertex selection follows the convention from glProvokingVertex()
    • equivalent to GL_FIRST_VERTEX_CONVENTION β†’ always the first vertex in the primitive
    • equivalent to GL_LAST_VERTEX_CONVENTION β†’ always the last vertex in the primitive
    • equivalent to GL_UNDEFINED_VERTEX β†’ nah, it's not guaranteed to be taken from any specific vertex in the primitive at all πŸ’€
  • GL_LOGIC_OP_MODE β€” one value, a symbolic constant for the selected logic operation mode. Starts at GL_COPY. See glLogicOp().
  • GL_MAJOR_VERSION β€” one value: the major version number of the OpenGL API that the current context supports. main character energy fr.
  • GL_MAX_3D_TEXTURE_SIZE β€” one value, a rough estimate of the biggest 3D texture the GL can handle. Must be at least 64. Wanna know if a texture is too large? Use GL_PROXY_TEXTURE_3D. See glTexImage3D(). 🌸
  • GL_MAX_ARRAY_TEXTURE_LAYERS β€” one value. It's the maximum number of layers allowed in an array texture, and it must be at least 256. See glTexImage2D().
  • GL_MAX_CLIP_DISTANCES β€” one value, the max number of application-defined clipping distances. Must be at least 8.
  • GL_MAX_COLOR_TEXTURE_SAMPLES β€” one value, the max number of samples in a color multisample texture. πŸŽ€
  • GL_MAX_COMBINED_ATOMIC_COUNTERS β€” a single value: the max number of atomic counters available to all active shaders. iconic.
  • GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS β€” one value, the number of words for fragment shader uniform variables across all uniform blocks (default one included). Must be at least 1. See glUniform().
  • GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS β€” one value, the number of words for geometry shader uniform variables in all uniform blocks (default included). Must be at least 1. See glUniform().
  • GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS β€” one value: the max supported texture image units usable to access texture maps from the vertex shader and the fragment processor combined. Plot twist β€” if the vertex shader and the fragment processing stage both touch the same texture image unit, that counts as two texture image units against this limit. Must be at least 48. See glActiveTexture(). 🫢
  • GL_MAX_COMBINED_UNIFORM_BLOCKS β€” one value, the max number of uniform blocks per program. Must be at least 70. See glUniformBlockBinding().
  • GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS β€” one value, the number of words for vertex shader uniform variables in all uniform blocks (default included). Must be at least 1. See glUniform().
  • GL_MAX_CUBE_MAP_TEXTURE_SIZE β€” one value. It's a rough estimate of the biggest cube-map texture the GL can handle. Must be at least 1024. Use GL_PROXY_TEXTURE_CUBE_MAP to check if a texture is too large. See glTexImage2D(). ✨
  • GL_MAX_DEPTH_TEXTURE_SAMPLES β€” one value, the max number of samples in a multisample depth or depth-stencil texture.
  • GL_MAX_DRAW_BUFFERS β€” one value, the max number of simultaneous outputs that can be written in a fragment shader. Must be at least 8. See glDrawBuffers().
  • GL_MAX_DUAL_SOURCE_DRAW_BUFFERS β€” one value, the max number of active draw buffers when you're using dual-source blending. Must be at least 1. See glBlendFunc() and glBlendFuncSeparate().
  • GL_MAX_ELEMENTS_INDICES β€” one value, the recommended max number of vertex array indices. See glDrawRangeElements(). πŸ’œ
  • GL_MAX_ELEMENTS_VERTICES β€” one value, the recommended max number of vertex array vertices. See glDrawRangeElements().
  • GL_MAX_FRAGMENT_ATOMIC_COUNTERS β€” a single value, the max number of atomic counters available to fragment shaders.
  • GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS β€” one value, the max number of active shader storage blocks a fragment shader can access.
  • GL_MAX_FRAGMENT_INPUT_COMPONENTS β€” one value, the max number of components of the inputs read by the fragment shader. Must be at least 128.
  • GL_MAX_FRAGMENT_UNIFORM_COMPONENTS β€” one value, the max number of individual floating-point, integer, or boolean values that fit in uniform variable storage for a fragment shader. Must be at least 1024. See glUniform().
  • GL_MAX_FRAGMENT_UNIFORM_VECTORS β€” one value, the max number of individual 4-vectors of floating-point, integer, or boolean values that fit in uniform variable storage for a fragment shader. It equals the value of GL_MAX_FRAGMENT_UNIFORM_COMPONENTS divided by 4, and must be at least 256. See glUniform(). 🧚
  • GL_MAX_FRAGMENT_UNIFORM_BLOCKS β€” one value, the max number of uniform blocks per fragment shader. Must be at least 12. See glUniformBlockBinding().
  • GL_MAX_FRAMEBUFFER_WIDTH β€” one value, the max width for a framebuffer with no attachments. Must be at least 16384. See glFramebufferParameter.
  • GL_MAX_FRAMEBUFFER_HEIGHT β€” one value, the max height for a framebuffer with no attachments. Must be at least 16384. See glFramebufferParameter.
  • GL_MAX_FRAMEBUFFER_LAYERS β€” one value, the max number of layers for a framebuffer with no attachments. Must be at least 2048. See glFramebufferParameter.
  • GL_MAX_FRAMEBUFFER_SAMPLES β€” one value, the max samples in a framebuffer with no attachments. Must be at least 4. See glFramebufferParameter. πŸ“
  • GL_MAX_GEOMETRY_ATOMIC_COUNTERS β€” a single value, the max number of atomic counters available to geometry shaders.
  • GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS β€” one value, the max number of active shader storage blocks a geometry shader can access.
  • GL_MAX_GEOMETRY_INPUT_COMPONENTS β€” one value, the max number of components of inputs read by a geometry shader. Must be at least 64.
  • GL_MAX_GEOMETRY_OUTPUT_COMPONENTS β€” one value, the max number of components of outputs written by a geometry shader. Must be at least 128.
  • GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS β€” one value, the max supported texture image units usable to access texture maps from the geometry shader. Must be at least 16. See glActiveTexture().
  • GL_MAX_GEOMETRY_UNIFORM_BLOCKS β€” one value, the max number of uniform blocks per geometry shader. Must be at least 12. See glUniformBlockBinding().
  • GL_MAX_GEOMETRY_UNIFORM_COMPONENTS β€” one value, the max number of individual floating-point, integer, or boolean values that fit in uniform variable storage for a geometry shader. Must be at least 1024. See glUniform(). πŸ”₯
  • GL_MAX_INTEGER_SAMPLES β€” one value, the max number of samples supported in integer format multisample buffers.
  • GL_MIN_MAP_BUFFER_ALIGNMENT β€” one value, the minimum alignment in basic machine units of pointers returned from glMapBuffer() and glMapBufferRange(). This value must be a power of two and must be at least 64. no cap. πŸ¦‹
  • GL_MAX_LABEL_LENGTH β€” data gives you back one value: the absolute longest label you're allowed to slap onto an object. Think of it as the character limit for your object's little name tag 🏷️. See glObjectLabel() and glObjectPtrLabel().
  • GL_MAX_PROGRAM_TEXEL_OFFSET β€” data returns one value, the biggest texel offset you're allowed to use in a texture lookup, and it's gotta be at least 7.
  • GL_MIN_PROGRAM_TEXEL_OFFSET β€” data returns one value, the smallest texel offset allowed in a texture lookup, which must be at most -8. (Yes bestie, negative. It's giving "the other direction" πŸ’….)
  • GL_MAX_RECTANGLE_TEXTURE_SIZE β€” data returns one value, and it's a rough estimate of the biggest rectangular texture the GL can handle. Must be at least 1024. Wanna know if a texture is too big? Use GL_PROXY_TEXTURE_RECTANGLE to check. See glTexImage2D().
  • GL_MAX_RENDERBUFFER_SIZE β€” data returns one value: the max supported size for renderbuffers ✨. See glFramebufferRenderbuffer().
  • GL_MAX_SAMPLE_MASK_WORDS β€” data returns one value, the maximum number of sample mask words.
  • GL_MAX_SERVER_WAIT_TIMEOUT β€” data returns one value, the maximum glWaitSync() timeout interval ⏳.
  • GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS β€” data returns one value, the max number of shader storage buffer binding points on the context, which must be at least 8.
  • GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS β€” data returns a single value: the max number of atomic counters available to tessellation control shaders.
  • GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS β€” data returns a single value: the max number of atomic counters available to tessellation evaluation shaders.
  • GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS β€” data returns one value, the max number of active shader storage blocks a tessellation control shader may access.
  • GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS β€” data returns one value, the max number of active shader storage blocks a tessellation evaluation shader may access.
  • GL_MAX_TEXTURE_BUFFER_SIZE β€” data returns one value: the max number of texels allowed in the texel array of a texture buffer object. Must be at least 65536 πŸ”₯.
  • GL_MAX_TEXTURE_IMAGE_UNITS β€” data returns one value, the max supported texture image units you can use to access texture maps from the fragment shader. Must be at least 16. See glActiveTexture().
  • GL_MAX_TEXTURE_LOD_BIAS β€” data returns one value, the max absolute value of the texture level-of-detail bias. Must be at least 2.0.
  • GL_MAX_TEXTURE_SIZE β€” data returns one value, a rough estimate of the biggest texture the GL can handle. Must be at least 1024. Curious if a texture is too big? Use a proxy texture target like GL_PROXY_TEXTURE_1D or GL_PROXY_TEXTURE_2D to find out. See glTexImage1D() and glTexImage2D().
  • GL_MAX_UNIFORM_BUFFER_BINDINGS β€” data returns one value, the max number of uniform buffer binding points on the context, which must be at least 36.
  • GL_MAX_UNIFORM_BLOCK_SIZE β€” data returns one value, the max size in basic machine units of a uniform block, which must be at least 16384.
  • GL_MAX_UNIFORM_LOCATIONS β€” data returns one value, the max number of explicitly assignable uniform locations, which must be at least 1024.
  • GL_MAX_VARYING_COMPONENTS β€” data returns one value, the number of components for varying variables, which must be at least 60.
  • GL_MAX_VARYING_VECTORS β€” data returns one value, the number of 4-vectors for varying variables. Fun fact: it's equal to the value of GL_MAX_VARYING_COMPONENTS, and must be at least 15.
  • GL_MAX_VARYING_FLOATS β€” data returns one value, the max number of interpolators available for processing varying variables used by vertex and fragment shaders. It counts individual floating-point values that can be interpolated β€” so varying variables declared as vectors, matrices, and arrays all eat up multiple interpolators 🍽️. Must be at least 32.
  • GL_MAX_VERTEX_ATOMIC_COUNTERS β€” data returns a single value: the max number of atomic counters available to vertex shaders.
  • GL_MAX_VERTEX_ATTRIBS β€” data returns one value, the max number of 4-component generic vertex attributes a vertex shader can reach. Must be at least 16. See glVertexAttrib().
  • GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS β€” data returns one value, the max number of active shader storage blocks a vertex shader may access.
  • GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS β€” data returns one value, the max supported texture image units usable to access texture maps from the vertex shader. The value may be at least 16. See glActiveTexture().
  • GL_MAX_VERTEX_UNIFORM_COMPONENTS β€” data returns one value, the max number of individual floating-point, integer, or boolean values that can live in uniform variable storage for a vertex shader. Must be at least 1024. See glUniform().
  • GL_MAX_VERTEX_UNIFORM_VECTORS β€” data returns one value, the max number of 4-vectors that may live in uniform variable storage for the vertex shader. This one equals the value of GL_MAX_VERTEX_UNIFORM_COMPONENTS and must be at least 256.
  • GL_MAX_VERTEX_OUTPUT_COMPONENTS β€” data returns one value, the max number of components of output written by a vertex shader, which must be at least 64.
  • GL_MAX_VERTEX_UNIFORM_BLOCKS β€” data returns one value, the max number of uniform blocks per vertex shader. Must be at least 12. See glUniformBlockBinding().
  • GL_MAX_VIEWPORT_DIMS β€” ooh, this one returns two values 🫢: the max supported width and height of the viewport. These must be at least as large as the visible dimensions of the display you're rendering to. See glViewport().
  • GL_MAX_VIEWPORTS β€” data returns one value, the max number of simultaneous viewports supported. Must be at least 16. See glViewportIndexed().
  • GL_MINOR_VERSION β€” data returns one value, the minor version number of the OpenGL API supported by the current context.
  • GL_NUM_COMPRESSED_TEXTURE_FORMATS β€” data returns a single integer value: how many compressed texture formats are available. The minimum value is 4. See glCompressedTexImage2D().
  • GL_NUM_EXTENSIONS β€” data returns one value, the number of extensions the GL implementation supports for the current context. See glGetString().
  • GL_NUM_PROGRAM_BINARY_FORMATS β€” data returns one value, the number of program binary formats supported by the implementation.
  • GL_NUM_SHADER_BINARY_FORMATS β€” data returns one value, the number of binary shader formats supported by the implementation. If it's greater than zero, bestie, the implementation supports loading binary shaders βœ…. If it's zero, loading binary shaders is not supported ❌.
  • GL_PACK_ALIGNMENT β€” data returns one value, the byte alignment used when writing pixel data to memory. Initial value is 4. See glPixelStore().
  • GL_PACK_IMAGE_HEIGHT β€” data returns one value, the image height used when writing pixel data to memory. Initial value is 0. See glPixelStore().
  • GL_PACK_LSB_FIRST β€” data returns a single boolean value: whether single-bit pixels being written to memory go first into the least significant bit of each unsigned byte. Initial value is GL_FALSE. See glPixelStore().
  • GL_PACK_ROW_LENGTH β€” data returns one value, the row length used when writing pixel data to memory. Initial value is 0. See glPixelStore().
  • GL_PACK_SKIP_IMAGES β€” data returns one value, how many pixel images get skipped before the first pixel is written into memory. Initial value is 0. See glPixelStore().
  • GL_PACK_SKIP_PIXELS β€” data returns one value, how many pixel locations get skipped before the first pixel is written into memory. Initial value is 0. See glPixelStore().
  • GL_PACK_SKIP_ROWS β€” data returns one value, how many rows of pixel locations get skipped before the first pixel is written into memory. Initial value is 0. See glPixelStore().
  • GL_PACK_SWAP_BYTES β€” data returns a single boolean value: whether the bytes of two-byte and four-byte pixel indices and components get swapped before being written to memory. Initial value is GL_FALSE. See glPixelStore().
  • GL_PIXEL_PACK_BUFFER_BINDING β€” data returns a single value: the name of the buffer object currently bound to the GL_PIXEL_PACK_BUFFER target. If nothing's bound there, you get 0 back. Initial value is 0. See glBindBuffer().
  • GL_PIXEL_UNPACK_BUFFER_BINDING β€” data returns a single value: the name of the buffer object currently bound to the GL_PIXEL_UNPACK_BUFFER target. Nothing bound? 0. Initial value is 0. See glBindBuffer().
  • GL_POINT_FADE_THRESHOLD_SIZE β€” data returns one value, the point size threshold used for determining the point size. See glPointParameter().
  • GL_PRIMITIVE_RESTART_INDEX β€” data returns one value, the current primitive restart index. Initial value is 0. See glPrimitiveRestartIndex().
  • GL_PROGRAM_BINARY_FORMATS β€” data gives you an array of GL_NUM_PROGRAM_BINARY_FORMATS values, indicating the program binary formats supported by the implementation πŸ“¦.
  • GL_PROGRAM_PIPELINE_BINDING β€” data gives a single value: the name of the currently bound program pipeline object, or zero if no program pipeline object is bound. See glBindProgramPipeline().
  • GL_PROGRAM_POINT_SIZE β€” data returns a single boolean value: is vertex program point size mode on? If it's enabled, the point size comes from the shader built-in gl_PointSize ✨. If it's disabled, the point size comes from point state as specified by glPointSize(). Initial value is GL_FALSE.
  • GL_PROVOKING_VERTEX β€” data returns one value, the currently selected provoking vertex convention. Initial value is GL_LAST_VERTEX_CONVENTION. See glProvokingVertex().
  • GL_POINT_SIZE β€” data returns one value, the point size as specified by glPointSize(). Initial value is 1.
  • GL_POINT_SIZE_GRANULARITY β€” data returns one value, the size difference between adjacent supported sizes for antialiased points. See glPointSize().
  • GL_POINT_SIZE_RANGE β€” data hands you back two values: the smallest and the largest supported sizes for antialiased points ✨. The smallest size has to be at most 1, and the largest size has to be at least 1, no cap. Peep glPointSize() for the full lore.
  • GL_POLYGON_OFFSET_FACTOR β€” data returns one value, the scaling factor that's used to work out the variable offset added onto the depth value of every fragment generated when a polygon gets rasterized πŸŽ€. Initial value is 0. See glPolygonOffset().
  • GL_POLYGON_OFFSET_UNITS β€” data returns one value. This value gets multiplied by an implementation-specific value and then added to the depth value of each fragment generated when a polygon is rasterized. Initial value is 0. See glPolygonOffset() πŸ’….
  • GL_POLYGON_OFFSET_FILL β€” data returns a single boolean value, telling you whether polygon offset is enabled for polygons in fill mode. Initial value is GL_FALSE. See glPolygonOffset().
  • GL_POLYGON_OFFSET_LINE β€” data returns a single boolean value, indicating whether polygon offset is enabled for polygons in line mode. Initial value is GL_FALSE. See glPolygonOffset() πŸ¦‹.
  • GL_POLYGON_OFFSET_POINT β€” data returns a single boolean value, indicating whether polygon offset is enabled for polygons in point mode. Initial value is GL_FALSE. See glPolygonOffset().
  • GL_POLYGON_SMOOTH β€” data returns a single boolean value indicating whether antialiasing of polygons is enabled. Initial value is GL_FALSE. See glPolygonMode() 🌸.
  • GL_POLYGON_SMOOTH_HINT β€” data returns one value, a symbolic constant indicating the mode of the polygon antialiasing hint. Initial value is GL_DONT_CARE. See glHint().
  • GL_READ_BUFFER β€” data returns one value, a symbolic constant that tells you which color buffer is selected for reading πŸ‘€. Initial value is GL_BACK if there's a back buffer β€” otherwise it's GL_FRONT, periodt. See glReadPixels().
  • GL_RENDERBUFFER_BINDING β€” data returns a single value, the name of the renderbuffer object currently bound to the target GL_RENDERBUFFER. If no renderbuffer object is bound to this target, 0 is returned. Initial value is 0. See glBindRenderbuffer().
  • GL_SAMPLE_BUFFERS β€” data returns a single integer value indicating the number of sample buffers associated with the framebuffer. See glSampleCoverage() πŸŽ€.
  • GL_SAMPLE_COVERAGE_VALUE β€” data returns a single positive floating-point value indicating the current sample coverage value πŸ’–. See glSampleCoverage().
  • GL_SAMPLE_COVERAGE_INVERT β€” data returns a single boolean value indicating if the temporary coverage value should be inverted. See glSampleCoverage().
  • GL_SAMPLER_BINDING β€” data returns a single value, the name of the sampler object currently bound to the active texture unit ✨. Initial value is 0. See glBindSampler().
  • GL_SAMPLES β€” data returns a single integer value indicating the coverage mask size. See glSampleCoverage().
  • GL_SCISSOR_BOX β€” data returns four values: the x and y window coordinates of the scissor box, followed by its width and height 🫢. Initially the x and y window coordinates are both 0, and the width and height are set to the size of the window. See glScissor().
  • GL_SCISSOR_TEST β€” data returns a single boolean value indicating whether scissoring is enabled. Initial value is GL_FALSE. See glScissor().
  • GL_SHADER_COMPILER β€” data returns a single boolean value indicating whether an online shader compiler is present in the implementation. Heads up bestie: all desktop OpenGL implementations must support online shader compilations, and therefore the value of GL_SHADER_COMPILER will always be GL_TRUE πŸ’€. Like, always.
  • GL_SHADER_STORAGE_BUFFER_BINDING β€” When it's used with non-indexed variants of glGet (such as glGetIntegerv), data returns a single value: the name of the buffer object currently bound to the target GL_SHADER_STORAGE_BUFFER. If no buffer object is bound to this target, 0 is returned. When it's used with indexed variants of glGet (such as glGetIntegeri_v), data returns a single value: the name of the buffer object bound to the indexed shader storage buffer binding points πŸ”₯. Initial value is 0 for all targets. See glBindBuffer(), glBindBufferBase(), and glBindBufferRange().
  • GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT β€” data returns a single value, the minimum required alignment for shader storage buffer sizes and offset. Initial value is 1. See glShaderStorageBlockBinding().
  • GL_SHADER_STORAGE_BUFFER_START β€” When it's used with indexed variants of glGet (such as glGetInteger64i_v), data returns a single value: the start offset of the binding range for each indexed shader storage buffer binding 🌈. Initial value is 0 for all bindings. See glBindBufferRange().
  • GL_SHADER_STORAGE_BUFFER_SIZE β€” When it's used with indexed variants of glGet (such as glGetInteger64i_v), data returns a single value: the size of the binding range for each indexed shader storage buffer binding. Initial value is 0 for all bindings. See glBindBufferRange().
  • GL_SMOOTH_LINE_WIDTH_RANGE β€” data returns a pair of values indicating the range of widths supported for smooth (antialiased) lines πŸ¦‹. See glLineWidth().
  • GL_SMOOTH_LINE_WIDTH_GRANULARITY β€” data returns a single value indicating the level of quantization applied to smooth line width parameters.
  • GL_STENCIL_BACK_FAIL β€” data returns one value, a symbolic constant indicating what action is taken for back-facing polygons when the stencil test fails. Initial value is GL_KEEP. See glStencilOpSeparate().
  • GL_STENCIL_BACK_FUNC β€” data returns one value, a symbolic constant indicating what function is used for back-facing polygons to compare the stencil reference value with the stencil buffer value. Initial value is GL_ALWAYS. See glStencilFuncSeparate() πŸ’….
  • GL_STENCIL_BACK_PASS_DEPTH_FAIL β€” data returns one value, a symbolic constant indicating what action is taken for back-facing polygons when the stencil test passes, but the depth test fails. Initial value is GL_KEEP. See glStencilOpSeparate().
  • GL_STENCIL_BACK_PASS_DEPTH_PASS β€” data returns one value, a symbolic constant indicating what action is taken for back-facing polygons when the stencil test passes and the depth test passes. Initial value is GL_KEEP. See glStencilOpSeparate() ✨.
  • GL_STENCIL_BACK_REF β€” data returns one value, the reference value that gets compared with the contents of the stencil buffer for back-facing polygons. Initial value is 0. See glStencilFuncSeparate().
  • GL_STENCIL_BACK_VALUE_MASK β€” data returns one value, the mask that's used for back-facing polygons to mask both the stencil reference value and the stencil buffer value before they're compared. Initial value is all 1's. See glStencilFuncSeparate() πŸŽ€.
  • GL_STENCIL_BACK_WRITEMASK β€” data returns one value, the mask that controls writing of the stencil bitplanes for back-facing polygons. Initial value is all 1's. See glStencilMaskSeparate().
  • GL_STENCIL_CLEAR_VALUE β€” data returns one value, the index to which the stencil bitplanes are cleared. Initial value is 0. See glClearStencil().
  • GL_STENCIL_FAIL β€” data returns one value, a symbolic constant indicating what action is taken when the stencil test fails. Initial value is GL_KEEP. See glStencilOp(). Important vibe check: this stencil state only affects non-polygons and front-facing polygons β€” back-facing polygons use separate stencil state, iykyk. See glStencilOpSeparate() πŸ’œ.
  • GL_STENCIL_FUNC β€” data returns one value, a symbolic constant indicating what function is used to compare the stencil reference value with the stencil buffer value. Initial value is GL_ALWAYS. See glStencilFunc(). This stencil state only affects non-polygons and front-facing polygons; back-facing polygons use separate stencil state. See glStencilFuncSeparate().
  • GL_STENCIL_PASS_DEPTH_FAIL β€” data returns one value, a symbolic constant indicating what action is taken when the stencil test passes, but the depth test fails. Initial value is GL_KEEP. See glStencilOp(). This stencil state only affects non-polygons and front-facing polygons β€” back-facing polygons use separate stencil state. See glStencilOpSeparate() 🌸.
  • GL_STENCIL_PASS_DEPTH_PASS β€” data returns one value, a symbolic constant indicating what action is taken when the stencil test passes and the depth test passes. Initial value is GL_KEEP. See glStencilOp(). This stencil state only affects non-polygons and front-facing polygons; back-facing polygons use separate stencil state. See glStencilOpSeparate().
  • GL_STENCIL_REF β€” data returns one value, the reference value that gets compared with the contents of the stencil buffer. Initial value is 0. See glStencilFunc(). This stencil state only affects non-polygons and front-facing polygons β€” back-facing polygons use separate stencil state. See glStencilFuncSeparate() πŸ‘‘.
  • GL_STENCIL_TEST β€” data returns a single boolean value indicating whether stencil testing of fragments is enabled. Initial value is GL_FALSE. See glStencilFunc() and glStencilOp().
  • GL_STENCIL_VALUE_MASK β€” data returns one value, the mask that's used to mask both the stencil reference value and the stencil buffer value before they're compared. Initial value is all 1's. See glStencilFunc(). This stencil state only affects non-polygons and front-facing polygons; back-facing polygons use separate stencil state. See glStencilFuncSeparate() πŸ’–.
  • GL_STENCIL_WRITEMASK β€” data returns one value, the mask that controls writing of the stencil bitplanes. Initial value is all 1's. See glStencilMask(). This stencil state only affects non-polygons and front-facing polygons β€” back-facing polygons use separate stencil state. See glStencilMaskSeparate().
  • GL_STEREO β€” data returns a single boolean value indicating whether stereo buffers (left and right) are supported πŸ¦‹.
  • GL_SUBPIXEL_BITS β€” data returns one value, an estimate of the number of bits of subpixel resolution that are used to position rasterized geometry in window coordinates. The value must be at least 4, no exceptions bestie.
  • GL_TEXTURE_BINDING_1D β€” data returns a single value, the name of the texture currently bound to the target GL_TEXTURE_1D. Initial value is 0. See glBindTexture() πŸŽ€.
  • GL_TEXTURE_BINDING_1D_ARRAY β€” data gets you one value: the name of the texture that's currently bound to GL_TEXTURE_1D_ARRAY. Initial value? 0. See glBindTexture().
  • GL_TEXTURE_BINDING_2D β€” data gets you one value: the name of the texture currently bound to GL_TEXTURE_2D. Initial value is 0. See glBindTexture().
  • GL_TEXTURE_BINDING_2D_ARRAY β€” data gets you one value: the name of the texture currently bound to GL_TEXTURE_2D_ARRAY. Initial value is 0. See glBindTexture().
  • GL_TEXTURE_BINDING_2D_MULTISAMPLE β€” data gets you one value: the name of the texture currently bound to GL_TEXTURE_2D_MULTISAMPLE. Initial value is 0. See glBindTexture().
  • GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY β€” data gets you one value: the name of the texture currently bound to GL_TEXTURE_2D_MULTISAMPLE_ARRAY. Initial value is 0. See glBindTexture().
  • GL_TEXTURE_BINDING_3D β€” data gets you one value: the name of the texture currently bound to GL_TEXTURE_3D. Initial value is 0. See glBindTexture().
  • GL_TEXTURE_BINDING_BUFFER β€” data gets you one value: the name of the texture currently bound to GL_TEXTURE_BUFFER. Initial value is 0. See glBindTexture().
  • GL_TEXTURE_BINDING_CUBE_MAP β€” data gets you one value: the name of the texture currently bound to GL_TEXTURE_CUBE_MAP. Initial value is 0. See glBindTexture().
  • GL_TEXTURE_BINDING_RECTANGLE β€” data gets you one value: the name of the texture currently bound to GL_TEXTURE_RECTANGLE. Initial value is 0. See glBindTexture().
  • GL_TEXTURE_COMPRESSION_HINT β€” data gets you one value telling you the mode of the texture compression hint. Initial value is GL_DONT_CARE.
  • GL_TEXTURE_BINDING_BUFFER β€” yes bestie, it's listed again πŸ’€ and this time it's a different thing, so don't @ me: data gets you one value, the name of the buffer object currently bound to the GL_TEXTURE_BUFFER buffer binding point. Initial value is 0. See glBindBuffer().
  • GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT β€” data gets you one value: the minimum required alignment for texture buffer sizes and offset. Initial value is 1. See glUniformBlockBinding().
  • GL_TIMESTAMP β€” data gets you one value: the 64-bit value of the current GL time. See glQueryCounter().
  • GL_TRANSFORM_FEEDBACK_BUFFER_BINDING β€” okay so it depends on the flavour of glGet you're using πŸ‘€ With the non-indexed variants (like glGetIntegerv), data gets you one value: the name of the buffer object currently bound to GL_TRANSFORM_FEEDBACK_BUFFER. No buffer object bound to that target? You get 0. With the indexed variants (like glGetIntegeri_v), data gets you one value: the name of the buffer object bound to the indexed transform feedback attribute stream. Initial value is 0 for all targets. See glBindBuffer(), glBindBufferBase(), and glBindBufferRange().
  • GL_TRANSFORM_FEEDBACK_BUFFER_START β€” with the indexed variants of glGet (like glGetInteger64i_v), data gets you one value: the start offset of the binding range for each transform feedback attribute stream. Initial value is 0 for all streams. See glBindBufferRange().
  • GL_TRANSFORM_FEEDBACK_BUFFER_SIZE β€” with the indexed variants of glGet (like glGetInteger64i_v), data gets you one value: the size of the binding range for each transform feedback attribute stream. Initial value is 0 for all streams. See glBindBufferRange().
  • GL_UNIFORM_BUFFER_BINDING β€” same split-brain situation as above, so stay with me 🫢 With the non-indexed variants (like glGetIntegerv), data gets you one value: the name of the buffer object currently bound to GL_UNIFORM_BUFFER. If nothing's bound to that target, 0 comes back. With the indexed variants (like glGetIntegeri_v), data gets you one value: the name of the buffer object bound to the indexed uniform buffer binding point. Initial value is 0 for all targets. See glBindBuffer(), glBindBufferBase(), and glBindBufferRange().
  • GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT β€” data gets you one value: the minimum required alignment for uniform buffer sizes and offset. Initial value is 1. See glUniformBlockBinding().
  • GL_UNIFORM_BUFFER_SIZE β€” with the indexed variants of glGet (like glGetInteger64i_v), data gets you one value: the size of the binding range for each indexed uniform buffer binding. Initial value is 0 for all bindings. See glBindBufferRange().
  • GL_UNIFORM_BUFFER_START β€” with the indexed variants of glGet (like glGetInteger64i_v), data gets you one value: the start offset of the binding range for each indexed uniform buffer binding. Initial value is 0 for all bindings. See glBindBufferRange().
  • GL_UNPACK_ALIGNMENT β€” data gets you one value: the byte alignment used for reading pixel data from memory. Initial value is 4. See glPixelStore().
  • GL_UNPACK_IMAGE_HEIGHT β€” data gets you one value: the image height used for reading pixel data from memory. The initial is 0. See glPixelStore().
  • GL_UNPACK_LSB_FIRST β€” data gets you a single boolean value telling you whether single-bit pixels being read from memory are read first from the least significant bit of each unsigned byte. Initial value is GL_FALSE. See glPixelStore().
  • GL_UNPACK_ROW_LENGTH β€” data gets you one value: the row length used for reading pixel data from memory. Initial value is 0. See glPixelStore().
  • GL_UNPACK_SKIP_IMAGES β€” data gets you one value: the number of pixel images skipped before the first pixel is read from memory. Initial value is 0. See glPixelStore().
  • GL_UNPACK_SKIP_PIXELS β€” data gets you one value: the number of pixel locations skipped before the first pixel is read from memory. Initial value is 0. See glPixelStore().
  • GL_UNPACK_SKIP_ROWS β€” data gets you one value: the number of rows of pixel locations skipped before the first pixel is read from memory. Initial value is 0. See glPixelStore().
  • GL_UNPACK_SWAP_BYTES β€” data gets you a single boolean value telling you whether the bytes of two-byte and four-byte pixel indices and components are swapped after being read from memory. Initial value is GL_FALSE. See glPixelStore().
  • GL_VERTEX_ARRAY_BINDING β€” data gets you one value: the name of the vertex array object currently bound to the context. If no vertex array object is bound to the context, 0 comes back. Initial value is 0. See glBindVertexArray().
  • GL_VERTEX_BINDING_DIVISOR β€” accepted by the indexed forms ✨ data gets you a single integer value representing the instance step divisor of the first element in the bound buffer's data store for vertex attribute bound to index.
  • GL_VERTEX_BINDING_OFFSET β€” accepted by the indexed forms. data gets you a single integer value representing the byte offset of the first element in the bound buffer's data store for vertex attribute bound to index.
  • GL_VERTEX_BINDING_STRIDE β€” accepted by the indexed forms. data gets you a single integer value representing the byte offset between the start of each element in the bound buffer's data store for vertex attribute bound to index.
  • GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET β€” data gets you a single integer value containing the maximum offset that may be added to a vertex binding offset.
  • GL_MAX_VERTEX_ATTRIB_BINDINGS β€” data gets you a single integer value containing the maximum number of vertex buffers that may be bound.
  • GL_VIEWPORT β€” okay this one's got two whole moods, keep up πŸ’…
    • With the non-indexed variants of glGet (like glGetIntegerv), data gets you four values: the x and y window coordinates of the viewport, followed by its width and height. Initially the x and y window coordinates are both set to 0, and the width and height are set to the width and height of the window into which the GL will do its rendering. See glViewport().
    • With the indexed variants of glGet (like glGetIntegeri_v), data gets you four values: the x and y window coordinates of the indexed viewport, followed by its width and height. Initially the x and y window coordinates are both set to 0, and the width and height are set to the width and height of the window into which the GL will do its rendering. See
glViewportIndexedf
  • GL_VIEWPORT_BOUNDS_RANGE β€” data gets you two values: the minimum and maximum viewport bounds range. The minimum range should be at least [-32768, 32767].
  • GL_VIEWPORT_INDEX_PROVOKING_VERTEX β€” data gets you one value: the implementation dependent specifc vertex of a primitive that is used to select the viewport index. And what that value means is whole lore, so:
    • If it's equivalent to GL_PROVOKING_VERTEX, then the vertex selection follows the convention specified by glProvokingVertex().
    • If it's equivalent to GL_FIRST_VERTEX_CONVENTION, then the selection is always taken from the first vertex in the primitive.
    • If it's equivalent to GL_LAST_VERTEX_CONVENTION, then the selection is always taken from the last vertex in the primitive.
    • If it's equivalent to GL_UNDEFINED_VERTEX, then the selection is not guaranteed to be taken from any specific vertex in the primitive. πŸ™ˆ
  • GL_VIEWPORT_SUBPIXEL_BITS β€” data gets you a single value: the number of bits of sub-pixel precision which the GL uses to interpret the floating point viewport bounds. The minimum value is 0.
  • GL_MAX_ELEMENT_INDEX β€” data gets you a single value: the maximum index that may be specified during the transfer of generic vertex attributes to the GL.

Lowkey the best part: many of the boolean parameters can also be queried more easily using glIsEnabled(). Noted, bestie, noted πŸŽ€

πŸ’… NOTES πŸ’…

Okay bestie, real talk: these params return the associated value for the active texture unit β€” GL_TEXTURE_1D, GL_TEXTURE_BINDING_1D, GL_TEXTURE_2D, GL_TEXTURE_BINDING_2D, GL_TEXTURE_3D, and GL_TEXTURE_BINDING_3D. Slay, but keep that texture-unit context in mind. ✨

GL_MAX_VIEWPORTS, GL_VIEWPORT_SUBPIXEL_BITS, GL_VIEWPORT_BOUNDS_RANGE, GL_LAYER_PROVOKING_VERTEX, and GL_VIEWPORT_INDEX_PROVOKING_VERTEX are available only if the GL version is 4.1 or greater.

GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS, GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS, GL_MAX_GEOMETRY_ATOMIC_COUNTERS, GL_MAX_FRAMGENT_ATOMIC_COUNTERS, and GL_MIN_MAP_BUFFER_ALIGNMENT are accepted by pname only if the GL version is 4.2 or greater.

GL_MAX_ELEMENT_INDEX is accepted by pname only if the GL version is 4.3 or greater. πŸ’…

GL_MAX_COMPUTE_UNIFORM_BLOCKS, GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_ATOMIC_COUNTERS, GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_COUNT, and GL_MAX_COMPUTE_WORK_GROUP_SIZE and GL_DISPATCH_INDIRECT_BUFFER_BINDING are available only if the GL version is 4.3 or greater.

GL_MAX_DEBUG_GROUP_STACK_DEPTH, GL_DEBUG_GROUP_STACK_DEPTH, and GL_MAX_LABEL_LENGTH are accepted only if the GL version is 4.3 or greater.

GL_MAX_UNIFORM_LOCATIONS is accepted only if the GL version is 4.3 or greater.

GL_MAX_FRAMEBUFFER_WIDTH, GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_LAYERS, and GL_MAX_FRAMEBUFFER_SAMPLES are available only if the GL version is 4.3 or greater. 🫢

GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS, GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS, GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS, GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, and GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS are available only if the GL version is 4.3 or higher.

GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT is available only if the GL version is 4.3 or greater.

GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE, GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, and GL_MAX_VERTEX_ATTRIB_BINDINGS are available only if the GL version is 4.3 or greater. πŸ¦‹


😭 ERRORS 😭

GL_INVALID_ENUM is generated if pname is not an accepted value. Not iconic, but that’s the rule.

GL_INVALID_VALUE is generated on any of glGetBooleani_v, glGetIntegeri_v, or glGetInteger64i_v if index is outside of the valid range for the indexed state target. Ma’am, that index is out of bounds. πŸ’€


🌈 VERSION SUPPORT 🌈

OpenGL Version vibes are 2.0, 2.1, 3.0, 3.1, 3.2, 3.3, 4.0, 4.1, 4.2, 4.3, 4.4, and 4.5. Here’s the whole support grid as a list, because tables are not the moment.

⭐ Function / Feature Name ⭐

  • glGetBooleani_v β€” 2.0: -, 2.1: -, 3.0: βœ”, 3.1: βœ”, 3.2: βœ”, 3.3: βœ”, 4.0: βœ”, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetBooleanv β€” 2.0: βœ”, 2.1: βœ”, 3.0: βœ”, 3.1: βœ”, 3.2: βœ”, 3.3: βœ”, 4.0: βœ”, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetDoublei_v β€” 2.0: -, 2.1: -, 3.0: -, 3.1: -, 3.2: -, 3.3: -, 4.0: -, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetDoublev β€” 2.0: βœ”, 2.1: βœ”, 3.0: βœ”, 3.1: βœ”, 3.2: βœ”, 3.3: βœ”, 4.0: βœ”, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetFloati_v β€” 2.0: -, 2.1: -, 3.0: -, 3.1: -, 3.2: -, 3.3: -, 4.0: -, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetFloatv β€” 2.0: βœ”, 2.1: βœ”, 3.0: βœ”, 3.1: βœ”, 3.2: βœ”, 3.3: βœ”, 4.0: βœ”, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetInteger64i_v β€” 2.0: -, 2.1: -, 3.0: -, 3.1: -, 3.2: βœ”, 3.3: βœ”, 4.0: βœ”, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetInteger64v β€” 2.0: -, 2.1: -, 3.0: -, 3.1: -, 3.2: βœ”, 3.3: βœ”, 4.0: βœ”, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetIntegeri_v β€” 2.0: -, 2.1: -, 3.0: βœ”, 3.1: βœ”, 3.2: βœ”, 3.3: βœ”, 4.0: βœ”, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”
  • glGetIntegerv β€” 2.0: βœ”, 2.1: βœ”, 3.0: βœ”, 3.1: βœ”, 3.2: βœ”, 3.3: βœ”, 4.0: βœ”, 4.1: βœ”, 4.2: βœ”, 4.3: βœ”, 4.4: βœ”, 4.5: βœ”

πŸ‘€ SEE ALSO πŸ‘€

The whole friend group: glGetActiveUniform(), glGetAttachedShaders(), glGetAttribLocation(), glGetBufferParameter(), glGetBufferPointerv(), glGetBufferSubData(), glGetCompressedTexImage(), glGetError(), glGetProgram(), glGetProgramInfoLog(), glGetQueryiv(), glGetQueryObject(), glGetShader(), glGetShaderInfoLog(), glGetShaderSource(), glGetString(), glGetTexImage(), glGetTexLevelParameter(), glGetTexParameter(), glGetUniform(), glGetUniformLocation(), glGetVertexAttrib(), glGetVertexAttribPointerv(), glIsEnabled().


Copyright © 1991-2006 Silicon Graphics, Inc. Copyright © 2010-2014 Khronos Group. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/. 🫢


Copyright Β© 1991-2006 Silicon Graphics, Inc.

Copyright Β© 2010-2014 Khronos Group


Mwah πŸ’‹ bestie, that’s the whole page. The footer energy is source/version [FIXME: source], date 08/09/2021, and page GLGET(3G) β€” now go query some GL state and slay. βœ¨πŸ‘‘

πŸ“¦ where this page comes from