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