glCreateShaderProgramv — create a stand-alone program from an array of null-terminated source code strings
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.
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
.
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.
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/.