glDetachShader
3G

# 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.

## Notes

`glDetachShader` is available only if the GL version is 2.0 or greater.

## 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`.

`GL_INVALID_OPERATION` is generated if `glDetachShader` is executed between the execution of glBegin and the corresponding execution of glEnd.

## 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/.