# glEnable

## Name

glEnable — enable or disable server-side GL capabilities

## C Specification

void glEnable(GLenum cap);

## Parameters

cap

Specifies a symbolic constant indicating a GL capability.

## C Specification

void glDisable(GLenum cap);

## Parameters

cap

Specifies a symbolic constant indicating a GL capability.

## C Specification

void glEnablei(GLenum cap, GLuint index);

## Parameters

cap

Specifies a symbolic constant indicating a GL capability.

index

Specifies the index of the swtich to enable.

## C Specification

void glDisablei(GLenum cap, GLuint index);

## Parameters

cap

Specifies a symbolic constant indicating a GL capability.

index

Specifies the index of the swtich to disable.

## Description

glEnable and glDisable enable and disable various capabilities. Use glIsEnabled or glGet to determine the current setting of any capability. The initial value for each capability with the exception of GL_DITHER and GL_MULTISAMPLE is GL_FALSE. The initial value for GL_DITHER and GL_MULTISAMPLE is GL_TRUE.

Both glEnable and glDisable take a single argument, cap, which can assume one of the following values:

Some of the GL's capabilities are indicated. glEnablei and glDisablei enable and disable indexed capabilities.

GL_BLEND

If enabled, blend the computed fragment color values with the values in the color buffers. See glBlendFunc.

GL_CLIP_DISTANCEi

If enabled, clip geometry against user-defined half space i.

GL_COLOR_LOGIC_OP

If enabled, apply the currently selected logical operation to the computed fragment color and color buffer values. See glLogicOp.

GL_CULL_FACE

If enabled, cull polygons based on their winding in window coordinates. See glCullFace.

GL_DEPTH_CLAMP

If enabled, the $-wc≤zc≤wc$ plane equation is ignored by view volume clipping (effectively, there is no near or far plane clipping). See glDepthRange.

GL_DEPTH_TEST

If enabled, do depth comparisons and update the depth buffer. Note that even if the depth buffer exists and the depth mask is non-zero, the depth buffer is not updated if the depth test is disabled. See glDepthFunc and glDepthRange.

GL_DITHER

If enabled, dither color components or indices before they are written to the color buffer.

GL_FRAMEBUFFER_SRGB

If enabled and the value of GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING for the framebuffer attachment corresponding to the destination buffer is GL_SRGB, the R, G, and B destination color values (after conversion from fixed-point to floating-point) are considered to be encoded for the sRGB color space and hence are linearized prior to their use in blending.

GL_LINE_SMOOTH

If enabled, draw lines with correct filtering. Otherwise, draw aliased lines. See glLineWidth.

GL_MULTISAMPLE

If enabled, use multiple fragment samples in computing the final color of a pixel. See glSampleCoverage.

GL_POLYGON_OFFSET_FILL

If enabled, and if the polygon is rendered in GL_FILL mode, an offset is added to depth values of a polygon's fragments before the depth comparison is performed. See glPolygonOffset.

GL_POLYGON_OFFSET_LINE

If enabled, and if the polygon is rendered in GL_LINE mode, an offset is added to depth values of a polygon's fragments before the depth comparison is performed. See glPolygonOffset.

GL_POLYGON_OFFSET_POINT

If enabled, an offset is added to depth values of a polygon's fragments before the depth comparison is performed, if the polygon is rendered in GL_POINT mode. See glPolygonOffset.

GL_POLYGON_SMOOTH

If enabled, draw polygons with proper filtering. Otherwise, draw aliased polygons. For correct antialiased polygons, an alpha buffer is needed and the polygons must be sorted front to back.

GL_PRIMITIVE_RESTART

Enables primitive restarting. If enabled, any one of the draw commands which transfers a set of generic attribute array elements to the GL will restart the primitive when the index of the vertex is equal to the primitive restart index. See glPrimitiveRestartIndex.

GL_SAMPLE_ALPHA_TO_COVERAGE

If enabled, compute a temporary coverage value where each bit is determined by the alpha value at the corresponding sample location. The temporary coverage value is then ANDed with the fragment coverage value.

GL_SAMPLE_ALPHA_TO_ONE

If enabled, each sample alpha value is replaced by the maximum representable alpha value.

GL_SAMPLE_COVERAGE

If enabled, the fragment's coverage is ANDed with the temporary coverage value. If GL_SAMPLE_COVERAGE_INVERT is set to GL_TRUE, invert the coverage value. See glSampleCoverage.

GL_SCISSOR_TEST

If enabled, discard fragments that are outside the scissor rectangle. See glScissor.

GL_STENCIL_TEST

If enabled, do stencil testing and update the stencil buffer. See glStencilFunc and glStencilOp.

GL_TEXTURE_CUBE_MAP_SEAMLESS

If enabled, modifies the way sampling is performed on cube map textures. See the spec for more information.

GL_PROGRAM_POINT_SIZE

If enabled and a vertex or geometry shader is active, then the derived point size is taken from the (potentially clipped) shader builtin gl_PointSize and clamped to the implementation-dependent point size range.

## Errors

GL_INVALID_ENUM is generated if cap is not one of the values listed previously.

GL_INVALID_VALUE is generated by glEnablei and glDisablei if index is greater than or equal to the number of indexed capabilities for cap.

## Notes

GL_PRIMITIVE_RESTART is available only if the GL version is 3.1 or greater.

GL_TEXTURE_CUBE_MAP_SEAMLESS is available only if the GL version is 3.2 or greater.

Any token accepted by glEnable or glDisable is also accepted by glEnablei and glDisablei, but if the capability is not indexed, the maximum value that index may take is zero.

In general, passing an indexed capability to glEnable or glDisable will enable or disable that capability for all indices, resepectively.