
    3j                        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\R                  " \5      R%                  S
S SSS9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\R                  " \5      R%                  SSSS9r\R                  " \5      R%                  SSSS9r\R                  " \5      R%                  SSSS9r\R                  " \5      R%                  SSSS9r\R                  " \5      R%                  SSSS9rg)a  OpenGL extension ARB.fragment_program

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

Overview (from the spec)
        
        Unextended OpenGL mandates a certain set of configurable per-
        fragment computations defining texture application, texture 
        environment, color sum, and fog operations.  Several extensions have 
        added further per-fragment computations to OpenGL.  For example, 
        extensions have defined new texture environment capabilities 
        (ARB_texture_env_add, ARB_texture_env_combine, ARB_texture_env_dot3,
        ARB_texture_env_crossbar), per-fragment depth comparisons 
        (ARB_depth_texture, ARB_shadow, ARB_shadow_ambient, 
        EXT_shadow_funcs), per-fragment lighting (EXT_fragment_lighting, 
        EXT_light_texture), and environment mapped bump mapping 
        (ATI_envmap_bumpmap).  
        
        Each such extension adds a small set of relatively inflexible per-
        fragment computations.
        
        This inflexibility is in contrast to the typical flexibility 
        provided by the underlying programmable floating point engines 
        (whether micro-coded fragment engines, DSPs, or CPUs) that are 
        traditionally used to implement OpenGL's texturing computations.  
        The purpose of this extension is to expose to the OpenGL application 
        writer a significant degree of per-fragment programmability for 
        computing fragment parameters.
        
        For the purposes of discussing this extension, a fragment program is 
        a sequence of floating-point 4-component vector operations that 
        determines how a set of program parameters (not specific to an
        individual fragment) and an input set of per-fragment parameters are 
        transformed to a set of per-fragment result parameters.
        
        The per-fragment computations for standard OpenGL given a particular 
        set of texture and fog application modes (along with any state for 
        extensions defining per-fragment computations) is, in essence, a 
        fragment program.  However, the sequence of operations is defined 
        implicitly by the current OpenGL state settings rather than defined 
        explicitly as a sequence of instructions.
        
        This extension provides an explicit mechanism for defining fragment 
        program instruction sequences for application-defined fragment 
        programs.  In order to define such fragment programs, this extension 
        defines a fragment programming model including a floating-point
        4-component vector instruction set and a relatively large set of 
        floating-point 4-component registers.
        
        The extension's fragment programming model is designed for efficient
        hardware implementation and to support a wide variety of fragment 
        programs.  By design, the entire set of existing fragment programs 
        defined by existing OpenGL per-fragment computation extensions can 
        be implemented using the extension's fragment programming model.

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/ARB/fragment_program.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    X/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/GL/ARB/fragment_program.pyglInitFragmentProgramARBr   D   s    !$$o77    stringprogramsc                     U 4$ )N )xs    r   <lambda>r   R   s    aTr   nT)sizepnameArgorPassInparams   )r   )r   r   )   )__doc__r   r   r   r   r   r   ctypesOpenGL.raw.GLr   r	   "OpenGL.raw.GL.ARB.fragment_programr   r   glProgramStringARBsetInputArraySizeglDeleteProgramsARBglGenProgramsARB	setOutputglProgramEnvParameter4dvARBglProgramEnvParameter4fvARBglProgramLocalParameter4dvARBglProgramLocalParameter4fvARBglGetProgramEnvParameterdvARBglGetProgramEnvParameterfvARBglGetProgramLocalParameterdvARBglGetProgramLocalParameterfvARBglGetProgramivARBr   r   r   <module>r2      s  ;x . - &  ) 0 >8 ??#56HHd  OO$78JJ  !12<<M3 =   $OO,GHZZa  $OO,GHZZa  &oo.KL^^a  &oo.KL^^a  &oo.KLVV$ W   &oo.KLVV$ W   !(0O P Z Z$ ![ !  !(0O P Z Z$ ![ !  //"34>>$ ?  r   