<!DOCTYPE refentry [ <!ENTITY % mathent SYSTEM "math.ent"> %mathent; ]>

<!-- Converted by db4-upgrade version 1.1 -->

<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="glBindVertexBuffer">
  <info>
    <copyright>
      <year>2014</year>

      <holder>Khronos Group</holder>
    </copyright>
  </info>

  <refmeta>
    <refentrytitle>glBindVertexBuffer</refentrytitle>

    <manvolnum>3G</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>glBindVertexBuffer</refname>

    <refname>glVertexArrayVertexBuffer</refname>

    <refpurpose>bind a buffer to a vertex buffer bind point</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <title>C Specification</title>

    <funcsynopsis>
      <funcprototype>
        <funcdef>void <function>glBindVertexBuffer</function></funcdef>

        <paramdef>GLuint <parameter>bindingindex</parameter></paramdef>

        <paramdef>GLuint <parameter>buffer</parameter></paramdef>

        <paramdef>GLintptr <parameter>offset</parameter></paramdef>

        <paramdef>GLsizei <parameter>stride</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>void <function>glVertexArrayVertexBuffer</function></funcdef>

        <paramdef>GLuint <parameter>vaobj</parameter></paramdef>

        <paramdef>GLuint <parameter>bindingindex</parameter></paramdef>

        <paramdef>GLuint <parameter>buffer</parameter></paramdef>

        <paramdef>GLintptr <parameter>offset</parameter></paramdef>

        <paramdef>GLsizei <parameter>stride</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1 xml:id="parameters">
    <title>Parameters</title>

    <variablelist>
      <varlistentry>
        <term><parameter>vaobj</parameter></term>

        <listitem>
          <para>Specifies the name of the vertex array object to be used by
          <function>glVertexArrayVertexBuffer</function> function.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>bindingindex</parameter></term>

        <listitem>
          <para>The index of the vertex buffer binding point to which to bind
          the buffer.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>buffer</parameter></term>

        <listitem>
          <para>The name of a buffer to bind to the vertex buffer binding
          point.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>offset</parameter></term>

        <listitem>
          <para>The offset of the first element of the buffer.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>stride</parameter></term>

        <listitem>
          <para>The distance between elements within the buffer.</para>
        </listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1 xml:id="description">
    <title>Description</title>

    <para><function>glBindVertexBuffer</function> and
    <function>glVertexArrayVertexBuffer</function> bind the buffer named
    <parameter>buffer</parameter> to the vertex buffer binding point whose
    index is given by <parameter>bindingindex</parameter>.
    <function>glBindVertexBuffer</function> modifies the binding of the
    currently bound vertex array object, whereas
    <function>glVertexArrayVertexBuffer</function> allows the caller to
    specify ID of the vertex array object with an argument named
    <parameter>vaobj</parameter>, for which the binding should be modified.
    <parameter>offset</parameter> and <parameter>stride</parameter> specify
    the offset of the first element within the buffer and the distance between
    elements within the buffer, respectively, and are both measured in basic
    machine units. <parameter>bindingindex</parameter> must be less than the
    value of <constant>GL_MAX_VERTEX_ATTRIB_BINDINGS</constant>.
    <parameter>offset</parameter> and <parameter>stride</parameter> must be
    greater than or equal to zero. If <parameter>buffer</parameter> is zero,
    then any buffer currently bound to the specified binding point is
    unbound.</para>

    <para>If <parameter>buffer</parameter> is not the name of an existing
    buffer object, the GL first creates a new state vector, initialized with a
    zero-sized memory buffer and comprising all the state and with the same
    initial values as in case of <function>glBindBuffer</function>.
    <parameter>buffer</parameter> is then attached to the specified
    <parameter>bindingindex</parameter> of the vertex array object.</para>
  </refsect1>

  <refsect1 xml:id="errors">
    <title>Errors</title>

    <para><constant>GL_INVALID_OPERATION</constant> is generated by
    <function>glBindVertexBuffer</function> if no vertex array object is
    bound.</para>

    <para><constant>GL_INVALID_OPERATION</constant> is generated by
    <function>glVertexArrayVertexBuffer</function> if
    <parameter>vaobj</parameter> is not the name of an existing vertex array
    object.</para>

    <para><constant>GL_INVALID_VALUE</constant> is generated if
    <parameter>bindingindex</parameter> is greater than or equal to the value
    of <constant>GL_MAX_VERTEX_ATTRIB_BINDINGS</constant>.</para>

    <para><constant>GL_INVALID_VALUE</constant> is generated if
    <parameter>offset</parameter> or <parameter>stride</parameter> is less
    than zero, or if stride is greater than the value of
    <constant>GL_MAX_VERTEX_ATTRIB_STRIDE</constant>.</para>

    <para><constant>GL_INVALID_VALUE</constant> is generated if
    <parameter>buffer</parameter> is not zero or the name of an existing
    buffer object (as returned by <function>glGenBuffers</function> or
    <function>glCreateBuffers</function>).</para>
  </refsect1>

  <refsect1 xml:id="associatedgets">
    <title>Associated Gets</title>

    <para>
        <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry>
        with argument <constant>GL_MAX_VERTEX_ATTRIB_BINDINGS</constant>.
    </para>
  </refsect1>
    <refsect1 xml:id="versions"><title>Version Support</title>
        <informaltable>
            <tgroup cols="13" align="left">
                <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="apifunchead.xml" xpointer="xpointer(/*/*)"/>
        <tbody>
          <row>
            <entry><function>glBindVertexBuffer</function></entry>
                        <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="apiversion.xml" xpointer="xpointer(/*/*[@role='43']/*)"/>
                    </row>
                    <row>
                        <entry><function>glVertexArrayVertexBuffer</function></entry>
                        <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="apiversion.xml" xpointer="xpointer(/*/*[@role='45']/*)"/>
          </row>
        </tbody>
      </tgroup>
    </informaltable>
  </refsect1>

  <refsect1 xml:id="seealso">
    <title>See Also</title>

    <para>
        <citerefentry><refentrytitle>glVertexAttribBinding</refentrytitle></citerefentry>,
        <citerefentry><refentrytitle>glVertexAttribFormat</refentrytitle></citerefentry>,
        <citerefentry><refentrytitle>glVertexAttribPointer</refentrytitle></citerefentry>,
        <citerefentry><refentrytitle>glVertexBindingDivisor</refentrytitle></citerefentry>.
    </para>
    </refsect1>
    <refsect1 xml:id="Copyright"><title>Copyright</title>
        <para>
            Copyright <trademark class="copyright"/> 2014 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.
            <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://opencontent.org/openpub/">http://opencontent.org/openpub/</link>.
        </para>
  </refsect1>
</refentry>
