## Name

glDetachShader — Detaches a shader object from a program object to which it is attached

## C Specification

`void glDetachShader(` | GLuint program,
| GLuint shader`)`;

## Parameters

`program`

  Specifies the program object from which to detach the shader object.

`shader`

  Specifies the shader object to be detached.

## Description

`glDetachShader` detaches the shader object specified by `shader` from the program object specified by `program`. This command can be used to undo the effect of the command glAttachShader.

If `shader` has already been flagged for deletion by a call to glDeleteShader and it is not attached to any other program object, it will be deleted after it has been detached.

## Errors

`GL_INVALID_VALUE` is generated if either `program` or `shader` is a value that was not generated by OpenGL.

`GL_INVALID_OPERATION` is generated if `program` is not a program object.

`GL_INVALID_OPERATION` is generated if `shader` is not a shader object.

`GL_INVALID_OPERATION` is generated if `shader` is not attached to `program`.

## Associated Gets

glGetAttachedShaders with the handle of a valid program object

glGetShader with arguments `shader` and `GL_DELETE_STATUS`

glIsProgram

glIsShader

## See Also

glAttachShader

## Copyright

Copyright © 2003-2005 3Dlabs Inc. Ltd. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.