glGetShaderSource
3G

# glGetShaderSource

Returns the source code string from a shader object

## C Specification

    		void glGetShaderSource
    		GLuint shader
    		GLsizei bufSize
    		GLsizei *length
    		GLchar *source

## Parameters

`shader`

  Specifies the shader object to be queried.

`bufSize`

  Specifies the size of the character buffer for storing the returned source code string.

`length`

  Returns the length of the string returned in `source` (excluding the null terminator).

`source`

  Specifies an array of characters that is used to return the source code string.

## Description

`glGetShaderSource` returns the concatenation of the source code strings from the shader object specified by `shader`. The source code strings for a shader object are the result of a previous call to glShaderSource. The string returned by the function will be null terminated.

`glGetShaderSource` returns in `source` as much of the source code string as it can, up to a maximum of `bufSize` characters. The number of characters actually returned, excluding the null termination character, is specified by `length`. If the length of the returned string is not required, a value of `NULL` can be passed in the `length` argument. The size of the buffer required to store the returned source code string can be obtained by calling glGetShader with the value `GL_SHADER_SOURCE_LENGTH`.

## Notes

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

## Errors

`GL_INVALID_VALUE` is generated if `shader` is not a value generated by OpenGL.

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

`GL_INVALID_VALUE` is generated if `bufSize` is less than 0.

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

## Associated Gets

glGetShader with argument `GL_SHADER_SOURCE_LENGTH`

glIsShader

## See Also

glCreateShader, glShaderSource

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