GL_IMG_program_binary

Supported Hardware

Series5, Series5XT, Series6, Series6XE, Series6XT

Valid APIs

OpenGL ES 2.0, 3.x

Description

This extension enables PowerVR program binary formats to be queried and handled by the GL_OES_get_program_binary extension, which allows binary shader programs to be retrieved, stored and reloaded, avoiding compilation steps on subsequent runs of an application.

Registry Link

http://www.khronos.org/registry/gles/extensions/IMG/IMG_program_binary.txt

Example

// Create a shader program object 
GLuint shaderProgram = glCreateProgram(); 
// If there isn't already a binary, create a program 
if (!binaryExists) 
{ 
	// Create shaders, compile them, attach them and link them as per normal, then... 
	// Retrieve the program binary size 
	GLint length=0; 
	glGetProgramiv(shaderProgram, GL_PROGRAM_BINARY_LENGTH, &length); 
	// Pointer to the binary shader program in memory, needs to be allocated with the 
	// right size. 
	GLvoid* programBinaryData = (GLvoid*)malloc(length); 
	// The format that the binary is retrieved in. 
	GLenum binaryFormat=0; 
	// Error checking variable - this should be greater than 0 after 
	// glGetProgramBinaryOES, otherwise there was an error. 
	GLsizei lengthWritten=0; 
	glGetProgramBinaryOES(shaderProgram, length, &lengthWritten, &binaryFormat, 
				   programBinaryData); 
} 
else 
{ 
	// Get the binary data, how much data there is, and what format it's in from whatever 
	// cache it's stored in (e.g. a file) 
	// ... 
	// Instead of creating, compiling, attaching and linking shaders, upload a binary 
	// program data from a program that previously underwent all of these stages. 
	glProgramBinaryOES(shaderProgram, binaryFormat, programBinaryData,  
				programBinaryDataLength); 
}