Revision as of 13:18, 29 April 2012 by AlfonsesCategoryBot (Talk | contribs) (Bot: Adding better formatting.)

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

glCreateShaderProgramv: create a stand-alone program from an array of null-terminated source code strings

Function Definition

 GLuint glCreateShaderProgramv(GLenum type​, GLsizei count​, const char **strings​);
Specifies the type of shader to create.
Specifies the number of source code strings in the array strings​.
Specifies the address of an array of pointers to source code strings from which to create the program object.


glCreateShaderProgram creates a program object containing compiled and linked shaders for a single stage specified by type​. strings​ refers to an array of count​ strings from which to create the shader executables.

glCreateShaderProgram is equivalent (assuming no errors are generated) to:

    const GLuint shader = glCreateShader(type);
    if (shader) {
        glShaderSource(shader, count, strings, NULL);
        const GLuint program = glCreateProgram();
        if (program) {
            GLint compiled = GL_FALSE;
            glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
            glProgramParameteri(program, GL_PROGRAM_SEPARABLE, GL_TRUE);
            if (compiled) {
                glAttachShader(program, shader);
                glDetachShader(program, shader);
            /* append-shader-info-log-to-program-info-log */
        return program;
    } else {
        return 0;
The program object created by glCreateShaderProgram has its GL_PROGRAM_SEPARABLE status set to GL_TRUE.


GL_INVALID_OPERATION is generated if pipeline​ is not a name previously returned from a call to glGenProgramPipelines or if such a name has been deleted by a call to glDeleteProgramPipelines.

GL_INVALID_OPERATION is generated if program​ refers to a program object that has not been successfully linked.

See Also

glCreateShader, glCreateProgram, glCompileShader, glLinkProgram


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.