
    3j                     H   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	\
R                   S
SS9r\R                  " \5      R                  SSSS9R                  SS SSS9r\R                  " \5      R                  SSSS9R                  SS SSS9r\R                  " \5      R)                  SS5      r\R                  " \5      R                  SSSS9r\R                  " \5      R                  S	SSS9rg)a  OpenGL extension ARB.shader_subroutine

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

Overview (from the spec)
        
        This extension adds support to shaders for "indirect subroutine calls", 
        where a single shader can include many subroutines and dynamically select
        through the API which subroutine is called from each call site. 
        Switching subroutines dynamically in this fashion can avoid the cost of 
        recompiling and managing multiple shaders, while still retaining most of
        the performance of specialized shaders.

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/ARB/shader_subroutine.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    Y/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/GL/ARB/shader_subroutine.pyglInitShaderSubroutineARBr      s    !$$o77    valuespnameT)sizepnameArgorPassInlength)   )r   r   namec                     U 4$ N xs    r   <lambda>r    %       !r   bufSizec                     U 4$ r   r   r   s    r   r    r    *   r!   r   indicesparams)__doc__r   r   r   r   r   r   ctypesOpenGL.raw.GLr   r	   #OpenGL.raw.GL.ARB.shader_subroutiner   r   glGetActiveSubroutineUniformiv	setOutput_glget_size_mapping glGetActiveSubroutineUniformNameglGetActiveSubroutineNameglUniformSubroutinesuivsetInputArraySizeglGetUniformSubroutineuivglGetProgramStageivr   r   r   <module>r3      sV  $ . - &  ) 1 ?8
  '/MNXX'--w  Y    ")1Q!R!\!\$ "] ")
y$   !
 "//*CDNN$ O )
y$     (?@RRt  "//*CDNN$ O   OO$78BB$ C  r   