Class ARBGetProgramBinary

java.lang.Object
org.lwjgl.opengl.ARBGetProgramBinary

public class ARBGetProgramBinary extends Object
Native bindings to the ARB_get_program_binary extension.

This extension introduces new commands to retrieve and set the binary representation of a program object. GetProgramBinary allows an application to cache compiled and linked programs to avoid compiling and linking when used again. This may even allow the GL itself to act as an offline compiler. The resulting program binary can be reloaded into the GL via ProgramBinary. This is a very useful path for applications that wish to remain portable by shipping pure GLSL source shaders, yet would like to avoid the cost of compiling their shaders at runtime. Instead an application can supply its GLSL source shaders during first application run, or even during installation. The application then compiles and links its shaders and reads back the program binaries. On subsequent runs, only the program binaries need be supplied.

ProgramBinary may also accept binaries in vendor-specific formats produced by specialized offline compilation tools. This extension does not add any such formats, but allows for them in further extensions. Though the level of optimization may not be identical -- the offline shader compiler may have the luxury of more aggressive optimization at its disposal -- program binaries generated online by the GL are interchangeable with those generated offline by an SDK tool.

Requires OpenGL 3.0. Promoted to core in OpenGL 4.1.

  • Field Details

    • GL_PROGRAM_BINARY_RETRIEVABLE_HINT

      public static final int GL_PROGRAM_BINARY_RETRIEVABLE_HINT
      Accepted by the pname parameter of ProgramParameteri and GetProgramiv.
      See Also:
    • GL_PROGRAM_BINARY_LENGTH

      public static final int GL_PROGRAM_BINARY_LENGTH
      Accepted by the pname parameter of GetProgramiv.
      See Also:
    • GL_NUM_PROGRAM_BINARY_FORMATS

      public static final int GL_NUM_PROGRAM_BINARY_FORMATS
      Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv and GetDoublev.
      See Also:
    • GL_PROGRAM_BINARY_FORMATS

      public static final int GL_PROGRAM_BINARY_FORMATS
      Accepted by the pname parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv and GetDoublev.
      See Also:
  • Method Details

    • nglGetProgramBinary

      public static void nglGetProgramBinary(int program, int bufSize, long length, long binaryFormat, long binary)
      Unsafe version of: GetProgramBinary
      Parameters:
      bufSize - the size of the buffer whose address is given by binary
    • glGetProgramBinary

      public static void glGetProgramBinary(int program, @Nullable IntBuffer length, IntBuffer binaryFormat, ByteBuffer binary)
      Returns a binary representation of a program object's compiled and linked executable source.
      Parameters:
      program - the name of a program object whose binary representation to retrieve
      length - the address of a variable to receive the number of bytes written into binary
      binaryFormat - a variable to receive a token indicating the format of the binary data returned by the GL
      binary - an array into which the GL will return program's binary representation
    • nglProgramBinary

      public static void nglProgramBinary(int program, int binaryFormat, long binary, int length)
      Unsafe version of: ProgramBinary
      Parameters:
      length - the number of bytes contained in binary
    • glProgramBinary

      public static void glProgramBinary(int program, int binaryFormat, ByteBuffer binary)
      Loads a program object with a program binary.
      Parameters:
      program - the name of a program object into which to load a program binary
      binaryFormat - the format of the binary data in binary
      binary - an array containing the binary to be loaded into program
    • glProgramParameteri

      public static void glProgramParameteri(int program, int pname, int value)
      Specifies the integer value of a program object parameter.
      Parameters:
      program - the name of a program object whose parameter to modify
      pname - the name of the parameter to modify. One of:
      PROGRAM_BINARY_RETRIEVABLE_HINTPROGRAM_SEPARABLE
      value - the new value of the parameter specified by pname for program
    • glGetProgramBinary

      public static void glGetProgramBinary(int program, @Nullable int[] length, int[] binaryFormat, ByteBuffer binary)
      Array version of: GetProgramBinary