2010 Khronos Group
glGetProgramBinary 3G
glGetProgramBinary return a binary representation of a program object's compiled and linked executable source

## C Specification

void `glGetProgramBinary` GLuint program GLsizei bufsize GLsizei *length GLenum *binaryFormat void *binary

## Parameters

program

  Specifies the name of a program object whose binary representation to retrieve.

bufSize

  Specifies the size of the buffer whose address is given by binary.

length

  Specifies the address of a variable to receive the number of bytes written into binary.

binaryFormat

  Specifies the address of a variable to receive a token indicating the format of the binary data returned by the GL.

binary

  Specifies the address an array into which the GL will return program's binary representation.

## Description

`glGetProgramBinary` returns a binary representation of the compiled and linked executable for program into the array of bytes whose address is specified in binary. The maximum number of bytes that may be written into binary is specified by bufSize. If the program binary is greater in size than bufSize bytes, then an error is generated, otherwise the actual number of bytes written into binary is returned in the variable whose address is given by length. If length is `NULL`, then no length is returned.

The format of the program binary written into binary is returned in the variable whose address is given by binaryFormat, and may be implementation dependent. The binary produced by the GL may subsequently be returned to the GL by calling glProgramBinary, with binaryFormat and length set to the values returned by `glGetProgramBinary`, and passing the returned binary data in the binary parameter.

## Errors

`GL_INVALID_OPERATION` is generated if bufSize is less than the size of `GL_PROGRAM_BINARY_LENGTH` for program.

`GL_INVALID_OPERATION` is generated if `GL_LINK_STATUS` for the program object is false.

## Associated Gets

glGetProgram with argument `GL_PROGRAM_BINARY_LENGTH`

## See Also

glGetProgram, glProgramBinary

## Copyright

Copyright 2010 Khronos Group. 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/.