Jump to: navigation, search
Core in version 4.5
Core since version 4.1
Core ARB extension ARB_ES2_compatibility

glShaderBinary: load pre-compiled shader binaries

Function Definition

 void glShaderBinary(GLsizei count​, const GLuint *shaders​, GLenum binaryFormat​, const void *binary​, GLsizei length​);
Specifies the number of shader object handles contained in shaders​.
Specifies the address of an array of shader handles into which to load pre-compiled shader binaries.
Specifies the format of the shader binaries contained in binary​.
Specifies the address of an array of bytes containing pre-compiled binary shader code.
Specifies the length of the array whose address is given in binary​.


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.


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

glGetProgramBinary, glProgramBinary, glShaderSource


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.