
    3j"*                        S r SSKJr  SSKJrJrJr  SSKrSSK	r	SSK
r
SSKr\
R                  " S5      r\" S5      rSr/ r/ rS\" S5      \" S	5      \" S
5      \" S5      /4S\" S5      \" S5      /4S\" S5      \" S5      \" S5      \" S5      /4S\" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      /
4S\" S5      \" S 5      \" S!5      \" S"5      \" S#5      \" S$5      \" S%5      \" S&5      \" S'5      \" S(5      \" S)5      /4S*\" S+5      \" S,5      \" S-5      \" S.5      \" S/5      \" S05      /4S1\" S25      \" S35      \" S45      \" S55      \" S65      \" S75      \" S85      \" S95      \" S:5      \" S;5      \" S<5      /4/r " S= S>\5      r " S? S@\5      r\" 5       r " SA SB\5      r\" 5       rSC r\=rr " SD SE\5      rSF rg)GzuExtension module support methods

This module provides the tools required to check whether
an extension is available
    )LateBind)bytesunicodeas_8_bitNzOpenGL.extensionsGL_VERSION_GL_)   r   GL_ARB_vertex_array_objectGL_ARB_texture_buffer_objectGL_ARB_framebuffer_objectGL_ARB_map_buffer_range)r      GL_ARB_copy_bufferGL_ARB_uniform_buffer_object)r       GL_ARB_draw_elements_base_vertexGL_ARB_provoking_vertexGL_ARB_syncGL_ARB_texture_multisample)r   r   GL_ARB_blend_func_extendedGL_ARB_sampler_objectsGL_ARB_explicit_attrib_locationGL_ARB_occlusion_query2GL_ARB_shader_bit_encodingGL_ARB_texture_rgb10_a2uiGL_ARB_texture_swizzleGL_ARB_timer_query!GL_ARB_vertex_type_2_10_10_10_rev)   r   GL_ARB_texture_query_lodGL_ARB_draw_indirectGL_ARB_gpu_shader5GL_ARB_gpu_shader_fp64GL_ARB_shader_subroutineGL_ARB_tessellation_shader"GL_ARB_texture_buffer_object_rgb32GL_ARB_texture_cube_map_arrayGL_ARB_texture_gatherGL_ARB_transform_feedback2GL_ARB_transform_feedback3)r   r   GL_ARB_ES2_compatibilityGL_ARB_get_program_binaryGL_ARB_separate_shader_objectsGL_ARB_shader_precisionGL_ARB_vertex_attrib_64bitGL_ARB_viewport_array)r   r   GL_ARB_base_instanceGL_ARB_shading_language_420pack#GL_ARB_transform_feedback_instanced'GL_ARB_compressed_texture_pixel_storageGL_ARB_conservative_depthGL_ARB_internalformat_queryGL_ARB_map_buffer_alignmentGL_ARB_shader_atomic_countersGL_ARB_shader_image_load_storeGL_ARB_shading_language_packingGL_ARB_texture_storagec                   `    \ rS rSrSrSrSS/rS=rrS=r	r
/ rS r\S 5       rS rS rS	 rS
rg)ExtensionQuerierl   Nr   r   c                 :    U R                   R                  U 5        g N)
registeredappendselfs    K/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/extensions.py__init__ExtensionQuerier.__init__v   s    t$    c                 P    U R                    H  nU" U5      nU(       d  M  Us  $    g)NF)r@   )rC   	specifierr@   results       rD   hasExtensionExtensionQuerier.hasExtensiony   s)    //J	*Fv * rG   c                 :   [        U5      R                  [        S5      [        S5      5      nUR                  [        U R                  5      5      (       d  g UR                  [        U R                  5      5      (       az  U[        U R                  5      S  R                  [        S5      5       Vs/ s H  n[        U5      PM     nnUS S U R                  ::  a  gU R                  5       nU(       d  U$ X:*  $ U R                  5       nU=(       a    X;   $ s  snf )N._r   T)r   replace
startswithprefixversion_prefixlensplitintassumed_version
getVersiongetExtensions)rC   rI   xversion
extensionss        rD   __call__ExtensionQuerier.__call__   s    Y'//x}M	##HT[[$9::)<)< =>> #3t':':#;#=>DDXc]SSA AS   !} 4 44oo'G''++-J9)"99s   3Dc                 f    U R                   (       d  U R                  5       U l         U R                   $ r?   )r[   pullVersionrB   s    rD   rX   ExtensionQuerier.getVersion   s#    ||++-DL||rG   c                 f    U R                   (       d  U R                  5       U l         U R                   $ r?   )r\   pullExtensionsrB   s    rD   rY   ExtensionQuerier.getExtensions   s#    "113DOrG   )r\   r[   )__name__
__module____qualname____firstlineno__rR   rS   rW   r[   r\   version_stringextensions_stringr@   rE   classmethodrK   r]   rX   rY   __static_attributes__ rG   rD   r<   r<   l   sW    FN!fOGj)--N&J%  :(
rG   r<   c                   p    \ rS rSr\" S5      r\" S5      rSS/r\R                  " S5      r
SrS rS rS	rg
)
_GLQuerier   GL_r   r   z8^(?P<api_marker>OpenGL (ES )?)?(?P<version>\d+([.]\d+)+)Fc                    SSK Jn  UR                  R                  5       (       d  gSSKJn  SSKJn  U" U5      nUR                  SSS9U l        U R                  R                  U R                  5      nU(       aP  UR                  S	5      U l        UR                  S
5      nU(       a"  US:X  a  [        R                  S5        SU l        U(       a5  U R                  R                  S5       Vs/ s H  n[!        U5      PM     sn$ gs  snf )zmRetrieve 2-int declaration of major/minor GL version

returns [int(major),int(minor)] or False if not loaded
r   platformF)glGetString)
GL_VERSIONzutf-8ignore)errorsr[   
api_markerz	OpenGL ESzDImporting OpenGL in an OpenGL ES context is not advisable, generallyTrN   )OpenGLrt   PLATFORMCurrentContextIsValidOpenGL.raw.GL.VERSION.GL_1_1ru   rv   decoderi   version_matchermatchgroup_logwarningis_opengl_esrU   rV   )rC   rt   ru   rv   newr   ry   rZ   s           rD   r`   _GLQuerier.pullVersion   s    
 	$  6688<;*%!jjjB$$**4+>+>?"'++i"8D\2J,LL^ )-D%$($7$7$=$=c$BC$BqCF$BCC Ds   0D	c                    SSK Jn  UR                  R                  5       (       d  gSSKJn  SSKJnJn  SSKJ	n  SSK J
n   U" U5      nU" 5       (       a  UR                  5       eU(       a  UR                  5       nOgU R+                  5       nU(       d  U$ [-        US S
 5      n[.         H:  u  nnUU::  a-  U H%  nUU;  d  M  UR)                  [1        U5      5        M'     M9    U$    U$ ! [        UR                  4 aW    SSKJnJn	  SS	KJn
  U" 5       nU
" X5        / n[%        UR&                  5       H  nU	" X\5      nUR)                  U5        M      Nf = f)Nr   rs   F)GLint)ru   
glGetError)GL_EXTENSIONSerror)GL_NUM_EXTENSIONSglGetStringi)glGetIntegervr   )rz   rt   r{   r|   OpenGL.raw.GL._typesr   r}   ru   r   r   r   GLErrorrU   AttributeErrorOpenGL.raw.GL.VERSION.GL_3_0r   r   r   rangevaluerA   rX   tupleVERSION_EXTENSIONSr   )rC   rt   r   ru   r   r   r   r\   r   r   r   counti	extensionr[   checkvv_extsv_exts                      rD   rc   _GLQuerier.pullExtensions   s1   #  6688.H> 	-$]3J||mmo%'--/
 //#Ngbqk"+IAvEz#EJ."))(5/: $  , 1 . 
	-TBGE+3J5;;'(:	!!), (
	-s   ;C, ,A*EE)r   ri   N)re   rf   rg   rh   r   rR   rS   rW   recompiler   r   r`   rc   rl   rm   rG   rD   ro   ro      sC    e_F./N!fO jjCO L<*rG   ro   c                   @    \ rS rSr\" S5      r\" S5      rS rS rSr	g)_GLUQuerier   GLU_GLU_VERSION_GL_c                     SSK JnJn  U" U5      R                  [	        S5      5       Vs/ s H%  nUR                  5       (       d  M  [        U5      PM'     sn$ s  snf )Nr   )gluGetStringGLU_VERSIONrO   )
OpenGL.GLUr   r   rU   r   isdigitrV   )rC   r   r   rZ   s       rD   r`   _GLUQuerier.pullVersion  sO    8 "+.44Xc]C
Cyy{ CFC
 	
 
s   AAc                 >    SSK JnJn  U" U5      R                  5       $ )Nr   )r   GLU_EXTENSIONS)r   r   r   rU   )rC   r   r   s      rD   rc   _GLUQuerier.pullExtensions
  s    ;N+1133rG   rm   N)
re   rf   rg   rh   r   rR   rS   r`   rc   rl   rm   rG   rD   r   r      s!    fF/0N
4rG   r   c                 ,    [         R                  U 5      $ r?   )r<   rK   )rI   s    rD   rK   rK     s    ((33rG   c                   *    \ rS rSrS rS r\rS rSrg)
_Alternatei  c                 ,   Xl         X l        [        R                  (       as  [        R
                  " 5       R                  nU(       aL  UR                  (       a:  SUR                  R                  ;   a  UR                  R                  S   U l        ggggg)zBInitialize set of alternative implementations of the same functionre   N)	re   _alternativesrootMODULE_ANNOTATIONSsys	_getframef_back	f_globalsrf   )rC   name
alternatesframes       rD   rE   _Alternate.__init__  sf    '""MMO**E*8N8N*N"',,"8"8"D +Ou #rG   c                 |    SSK Jn   [        U R                  5       5      $ ! UR                   a
  n S nAgS nAff = f)Nr   r   F)rz   r   boolgetFinalCallNullFunctionError)rC   r   errs      rD   __bool___Alternate.__bool__$  s7     	))+,,&& 		s   ! ;;c           	         U R                    H  nU(       d  M  Us  $    SSKJn  UR                  SSR	                  U R                    Vs/ s H  o3R
                  PM     sn5      < SU R
                  < S35      es  snf )z<Call, doing a late lookup and bind to find an implementationr   r   z1Attempt to call an undefined alternate function (z, z), check for bool(z) before calling)r   rz   r   r   joinre   )rC   	alternater   rZ   s       rD   finalise_Alternate.finalise.  sp    ++Iy !  , 	!%% 		t/A/AB/A!::/ABC
 	
 Cs   
A<)rf   re   r   N)	re   rf   rg   rh   rE   r   __nonzero__r   rl   rm   rG   rD   r   r     s    E K
rG   r   c                     [        U [        [        45      (       d  U 4U-   nU R                  n [	        U [
        40 5      " U /UQ76 $ )zConstruct a callable that functions as the first implementation found of given set of alternatives

if name is a function then its name will be used....
)
isinstancer   r   re   typer   )r   	functionss     rD   r   r   C  sF    
 dUG,--Gi'	}}zmR(:	::rG   )__doc__OpenGL.latebindr   OpenGL._bytesr   r   r   rz   r   r   loggingr   	getLoggerr   VERSION_PREFIXCURRENT_GL_VERSIONAVAILABLE_GL_EXTENSIONSAVAILABLE_GLU_EXTENSIONSr   objectr<   ro   	GLQuerierr   
GLUQuerierrK   hasGLExtensionhasGLUExtensionr   r   rm   rG   rD   <module>r      s   % 2 2  
  	,-*+   
 	123401./		
 	)*34	
 	78./]#12		
 	1212-.67./1201-.)*89	
  	/0+,)*-./0129:45,-1212	
" 	/00156./12,-	

 	+,67:;>?012323455667-.	
IT n1v 1hW! Wt L	4" 4& ]
4 $0 /&
 &
R;rG   