
    3jz                     x   S r SSKJrJrJr  SSKJrJr  SSKrSSKJ	r	J
r
  SSK7  SSKJr  S r\R                  " \5      R                  S	S5      r\R                  " \5      R                  S	S5      R                  S
S5      R                  SS5      r\R                  " \5      R                  SS5      r\R                  " \5      R                  SS5      r\R                  " \5      R                  SS5      r\R                  " \5      R                  S	S5      R                  S
S5      R                  SS5      rg)a  OpenGL extension ARB.multi_bind

This module customises the behaviour of the 
OpenGL.raw.GL.ARB.multi_bind to provide a more 
Python-friendly API

Overview (from the spec)
        
        This extension provides a new set of commands allowing applications to
        bind or unbind a set of objects in a single call, instead of requiring a
        separate call for each bind or unbind operation.  Using a single command
        allows OpenGL implementations to amortize function call, name space
        lookup, and potential locking overhead over multiple bind or unbind
        operations.  The rendering loops of graphics applications frequently
        switch between different states, binding different sets of resources,
        including texture objects, sampler objects, textures for image loads and
        stores, uniform buffers, and vertex buffers; this extension provides
        "multi-bind" entry points for all of these object types.
        
        Each command in this extension includes a <first> and <count> parameter,
        specifying a continguous range of binding points to update, as well as an
        array of <count> object names specifying the objects to bind.  Unlike
        single bind commands, multi-bind commands can be used only to bind or
        unbind existing objects.  Passing a previously unused object name
        (generated or not) results in an error and does not create a new object.
        For binding points with associated data (e.g., ranges of a buffer),
        separate arrays are used to pass the associated data for each binding
        point.  Passing zero values in the array of object names removes the
        object bound to the current bounding point.  Additionally, if NULL is
        passed as the array of objects, objects bound to the entire range of
        binding points are unbound, as though the caller passed an array of
        zeroes.

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/ARB/multi_bind.txt
    )platformconstantarrays)
extensionswrapperN)_types_glgets)*)_EXTENSION_NAMEc                  :    SSK Jn   U R                  " [        5      $ )z=Return boolean indicating whether this extension is availabler   r   )OpenGLr   hasGLExtensionr   r   s    R/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/GL/ARB/multi_bind.pyglInitMultiBindARBr   ,   s    !$$o77    buffersoffsetssizestexturessamplersstrides)__doc__r   r   r   r   r   r   ctypesOpenGL.raw.GLr   r	   OpenGL.raw.GL.ARB.multi_bindr   r   glBindBuffersBasesetInputArraySizeglBindBuffersRangeglBindTexturesglBindSamplersglBindImageTexturesglBindVertexBuffers r   r   <module>r%      s3  #H . - &  ) * 88 //"34FFt  ??#56HHttT	  ~.@@ ~.@@ OO$78JJ  OO$78JJttt	 r   