void glDeleteProgram(GLuint program)
glDeleteProgram frees the memory and invalidates the name associated with the program object specified by program. This command effectively undoes the effects of a call to glCreateProgram.
If a program object is in use as part of current rendering state, it is flagged for deletion but is not deleted until it is no longer part of the current state for any rendering context. If a program object to be deleted has shader objects attached to it, those shader objects are automatically detached but not deleted unless they have already been flagged for deletion by a previous call to glDeleteShader. A value of 0 for program is silently ignored.
To determine whether a program object has been flagged for deletion, call glGetProgram with arguments program and GL_DELETE_STATUS.
glDeleteProgram is available only if the GL version is 2.0 or greater.
GL_INVALID_VALUE is generated if program is not a value generated by OpenGL.
GL_INVALID_OPERATION is generated if glDeleteProgram is executed between the execution of glBegin and the corresponding execution of glEnd.
glGet with argument GL_CURRENT_PROGRAM
glGetProgram with arguments program and GL_DELETE_STATUS
glCreateProgram, glCreateShader, glDetachShader, glUseProgram