GLAPI/glCreateShaderProgram: Difference between revisions

From OpenGL Wiki
Jump to navigation Jump to search
m Renaming category: 'GL 4 API Shader Program Creation' to 'Core API Ref Shader Program Creation'.
m Bot: Adding better formatting.
Line 9: Line 9:
== Function Definition ==
== Function Definition ==


   GLuint '''glCreateShaderProgramv'''(GLenum ''type'', GLsizei ''count'', const char **''strings'');
   GLuint '''glCreateShaderProgramv'''(GLenum {{param|type}}, GLsizei {{param|count}}, const char **{{param|strings}});


; type
; type
: Specifies the type of shader to create.
: Specifies the type of shader to create.
; count
; count
: Specifies the number of source code strings in the array ''strings''.
: Specifies the number of source code strings in the array {{param|strings}}.
; strings
; strings
: Specifies the address of an array of pointers to source code strings from which to create the program object.
: Specifies the address of an array of pointers to source code strings from which to create the program object.
Line 20: Line 20:
== Description ==
== Description ==


'''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''' creates a program object containing compiled and linked shaders for a single stage specified by {{param|type}}. {{param|strings}} refers to an array of {{param|count}} strings from which to create the shader executables.


'''glCreateShaderProgram''' is equivalent (assuming no errors are generated) to:
'''glCreateShaderProgram''' is equivalent (assuming no errors are generated) to:
Line 51: Line 51:
== Errors ==
== Errors ==


{{code|GL_INVALID_OPERATION}} is generated if ''pipeline'' is not a name previously returned from a call to [[GLAPI/glGenProgramPipelines|glGenProgramPipelines]] or if such a name has been deleted by a call to [[GLAPI/glDeleteProgramPipelines|glDeleteProgramPipelines]].
{{code|GL_INVALID_OPERATION}} is generated if {{param|pipeline}} is not a name previously returned from a call to {{apifunc|glGenProgramPipelines}} or if such a name has been deleted by a call to {{apifunc|glDeleteProgramPipelines}}.


{{code|GL_INVALID_OPERATION}} is generated if ''program'' refers to a program object that has not been successfully linked.
{{code|GL_INVALID_OPERATION}} is generated if {{param|program}} refers to a program object that has not been successfully linked.


== See Also ==
== See Also ==


[[GLAPI/glCreateShader|glCreateShader]], [[GLAPI/glCreateProgram|glCreateProgram]], [[GLAPI/glCompileShader|glCompileShader]], [[GLAPI/glLinkProgram|glLinkProgram]]
{{apifunc|glCreateShader}}, {{apifunc|glCreateProgram}}, {{apifunc|glCompileShader}}, {{apifunc|glLinkProgram}}


== Copyright ==
== Copyright ==

Revision as of 01:15, 29 April 2012

glCreateShaderProgramv
Core in version 4.6
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​);
type
Specifies the type of shader to create.
count
Specifies the number of source code strings in the array strings​.
strings
Specifies the address of an array of pointers to source code strings from which to create the program object.

Description

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);
        glCompileShader(shader);
        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);
                glLinkProgram(program);
                glDetachShader(program, shader);
            }
            /* append-shader-info-log-to-program-info-log */
        }
        glDeleteShader(shader);
        return program;
    } else {
        return 0;
    }

The program object created by glCreateShaderProgram has its GL_PROGRAM_SEPARABLE status set to GL_TRUE.

Errors

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

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/.