Opentk/Source/Bind/Specifications/Docs/glCreateShaderProgram.xml

121 lines
5.3 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
"http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry id="glCreateShaderProgram">
<refmeta>
<refmetainfo>
<copyright>
<year>2010</year>
<holder>Khronos Group</holder>
</copyright>
</refmetainfo>
<refentrytitle>glCreateShaderProgram</refentrytitle>
<manvolnum>3G</manvolnum>
</refmeta>
<refnamediv>
<refname>glCreateShaderProgramv</refname>
<refpurpose>create a stand-alone program from an array of null-terminated source code strings</refpurpose>
</refnamediv>
<refsynopsisdiv><title>C Specification</title>
<funcsynopsis>
<funcprototype>
<funcdef>GLuint <function>glCreateShaderProgramv</function></funcdef>
<paramdef>GLenum <parameter>type</parameter></paramdef>
<paramdef>GLsizei <parameter>count</parameter></paramdef>
<paramdef>const char **<parameter>strings</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 id="parameters"><title>Parameters</title>
<variablelist>
<varlistentry>
<term><parameter>type</parameter></term>
<listitem>
<para>
Specifies the type of shader to create.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>count</parameter></term>
<listitem>
<para>
Specifies the number of source code strings in the array <parameter>strings</parameter>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>strings</parameter></term>
<listitem>
<para>
Specifies the address of an array of pointers to source code strings from which to create the program object.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="description"><title>Description</title>
<para>
<function>glCreateShaderProgram</function> creates a program object containing compiled and linked
shaders for a single stage specified by <parameter>type</parameter>. <parameter>strings</parameter>
refers to an array of <parameter>count</parameter> strings from which to create the shader executables.
</para>
<para>
<function>glCreateShaderProgram</function> is equivalent (assuming no errors are generated) to:
</para>
<programlisting><![CDATA[ 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;
}]]></programlisting>
<para>
The program object created by <function>glCreateShaderProgram</function> has its <constant>GL_PROGRAM_SEPARABLE</constant>
status set to <constant>GL_TRUE</constant>.
</para>
</refsect1>
<refsect1 id="errors"><title>Errors</title>
<para>
<constant>GL_INVALID_OPERATION</constant> is generated if <parameter>pipeline</parameter> is not
a name previously returned from a call to <citerefentry><refentrytitle>glGenProgramPipelines</refentrytitle></citerefentry>
or if such a name has been deleted by a call to
<citerefentry><refentrytitle>glDeleteProgramPipelines</refentrytitle></citerefentry>.
</para>
<para>
<constant>GL_INVALID_OPERATION</constant> is generated if <parameter>program</parameter> refers
to a program object that has not been successfully linked.
</para>
</refsect1>
<refsect1 id="seealso"><title>See Also</title>
<para>
<citerefentry><refentrytitle>glCreateShader</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCreateProgram</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glCompileShader</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glLinkProgram</refentrytitle></citerefentry>
</para>
</refsect1>
<refsect1 id="Copyright"><title>Copyright</title>
<para>
Copyright <trademark class="copyright"></trademark> 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.
<ulink url="http://opencontent.org/openpub/">http://opencontent.org/openpub/</ulink>.
</para>
</refsect1>
</refentry>