2010 Khronos Group
glShaderBinary 3G
glShaderBinary load pre-compiled shader binaries

## C Specification

void `glShaderBinary` GLsizei count const GLuint *shaders GLenum binaryFormat const void *binary GLsizei length

## Parameters

count

  Specifies the number of shader object handles contained in shaders.

shaders

  Specifies the address of an array of shader handles into which to load pre-compiled shader binaries.

binaryFormat

  Specifies the format of the shader binaries contained in binary.

binary

  Specifies the address of an array of bytes containing pre-compiled binary shader code.

length

  Specifies the length of the array whose address is given in binary.

## Description

`glShaderBinary` loads pre-compiled shader binary code into the count shader objects whose handles are given in shaders. binary points to length bytes of binary shader code stored in client memory. binaryFormat specifies the format of the pre-compiled code.

The binary image contained in binary will be decoded according to the extension specification defining the specified binaryFormat token. OpenGL does not define any specific binary formats, but it does provide a mechanism to obtain token vaues for such formats provided by such extensions.

Depending on the types of the shader objects in shaders, `glShaderBinary` will individually load binary vertex or fragment shaders, or load an executable binary that contains an optimized pair of vertex and fragment shaders stored in the same binary.

## Errors

`GL_INVALID_OPERATION` is generated if more than one of the handles in shaders refers to the same shader object.

`GL_INVALID_ENUM` is generated if binaryFormat is not an accepted value.

`GL_INVALID_VALUE` is generated if the data pointed to by binary does not match the format specified by binaryFormat.

## Associated Gets

glGet with parameter `GL_NUM_SHADER_BINARY_FORMATS`.

glGet with parameter `GL_SHADER_BINARY_FORMATS`.

## See Also

glGetProgram, glGetProgramBinary, 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/.