1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
<?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="glValidateProgram">
<refentryinfo>
<copyright>
<year>2003-2005</year>
<holder>3Dlabs Inc. Ltd.</holder>
</copyright>
<copyright>
<year>2010-2013</year>
<holder>Khronos Group</holder>
</copyright>
</refentryinfo>
<refmeta>
<refentrytitle>glValidateProgram</refentrytitle>
<manvolnum>3G</manvolnum>
</refmeta>
<refnamediv>
<refname>glValidateProgram</refname>
<refpurpose>Validates a program object</refpurpose>
</refnamediv>
<refsynopsisdiv><title>C Specification</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>glValidateProgram</function></funcdef>
<paramdef>GLuint <parameter>program</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 id="parameters"><title>Parameters</title>
<variablelist>
<varlistentry>
<term><parameter>program</parameter></term>
<listitem>
<para>Specifies the handle of the program object to
be validated.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="description"><title>Description</title>
<para><function>glValidateProgram</function> checks to see
whether the executables contained in
<parameter>program</parameter> can execute given the current
OpenGL state. The information generated by the validation
process will be stored in <parameter>program</parameter>'s
information log. The validation information may consist of an
empty string, or it may be a string containing information about
how the current program object interacts with the rest of
current OpenGL state. This provides a way for OpenGL
implementers to convey more information about why the current
program is inefficient, suboptimal, failing to execute, and so
on.</para>
<para>The status of the validation operation will be stored as
part of the program object's state. This value will be set to
<constant>GL_TRUE</constant> if the validation succeeded, and
<constant>GL_FALSE</constant> otherwise. It can be queried by
calling
<citerefentry><refentrytitle>glGetProgram</refentrytitle></citerefentry>
with arguments <parameter>program</parameter> and
<constant>GL_VALIDATE_STATUS</constant>. If validation is
successful, <parameter>program</parameter> is guaranteed to
execute given the current state. Otherwise,
<parameter>program</parameter> is guaranteed to not execute.</para>
<para>This function is typically useful only during application
development. The informational string stored in the information
log is completely implementation dependent; therefore, an
application should not expect different OpenGL implementations
to produce identical information strings.</para>
</refsect1>
<refsect1 id="notes"><title>Notes</title>
<para>This function mimics the validation operation that OpenGL
implementations must perform when rendering commands are issued
while programmable shaders are part of current state. The error
<constant>GL_INVALID_OPERATION</constant> will be generated by
any command that triggers the rendering of geometry if:</para>
<itemizedlist>
<listitem>
<para>any two active samplers in the current program
object are of different types, but refer to the same
texture image unit,</para>
</listitem>
<listitem>
<para>the number of active samplers in the program exceeds the maximum
number of texture image units allowed.</para>
</listitem>
</itemizedlist>
<para>It may be difficult or cause a performance degradation for
applications to catch these errors when rendering commands are
issued. Therefore, applications are advised to make calls to
<function>glValidateProgram</function> to detect these issues
during application development.</para>
</refsect1>
<refsect1 id="errors"><title>Errors</title>
<para><constant>GL_INVALID_VALUE</constant> is generated if
<parameter>program</parameter> is not a value generated by
OpenGL.</para>
<para><constant>GL_INVALID_OPERATION</constant> is generated if
<parameter>program</parameter> is not a program object.</para>
</refsect1>
<refsect1 id="associatedgets"><title>Associated Gets</title>
<para><citerefentry><refentrytitle>glGetProgram</refentrytitle></citerefentry>
with arguments <parameter>program</parameter> and
<constant>GL_VALIDATE_STATUS</constant></para>
<para><citerefentry><refentrytitle>glGetProgramInfoLog</refentrytitle></citerefentry>
with argument <parameter>program</parameter></para>
<para><citerefentry><refentrytitle>glIsProgram</refentrytitle></citerefentry></para>
</refsect1>
<refsect1 id="seealso"><title>See Also</title>
<para><citerefentry><refentrytitle>glLinkProgram</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glUseProgram</refentrytitle></citerefentry></para>
</refsect1>
<refsect1 id="Copyright"><title>Copyright</title>
<para>
Copyright <trademark class="copyright"></trademark> 2003-2005 3Dlabs Inc. Ltd.
Copyright <trademark class="copyright"></trademark> 2010-2013 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>
|