a
    i‚j$  ă                   @   sĆ  d Z ddlmZmZmZ ddlmZmZ ddlZddlm	Z	m
Z
 ddlT ddlmZ dd	„ Ze eˇ d
dˇjddd„ dddŤZe eˇ d
dˇZe eˇ ddˇZe eˇjd
dd„ dddŤZe eˇjddddŤZe eˇjddddŤZe eˇjddddŤZe eˇjddddŤZe eˇjddddŤZe eˇjddddŤZe eˇjddddŤZe eˇjddddŤZe eˇ ddˇZe eˇ ddˇZe eˇ ddˇZe eˇ ddˇZe e ˇ ddˇZ e e!ˇ d
dˇZ!e e"ˇ ddˇZ"e e#ˇ ddˇZ#e e$ˇ ddˇZ$e e%ˇ ddˇZ%e e&ˇ ddˇZ&e e'ˇ ddˇZ'e e(ˇ ddˇZ(e e)ˇ ddˇZ)e e*ˇ ddˇZ*e e+ˇ ddˇZ+e e,ˇ ddˇZ,e e-ˇ ddˇZ-e e.ˇ ddˇZ.e e/ˇ ddˇZ/e e0ˇ ddˇZ0e e1ˇ ddˇZ1e e2ˇ ddˇZ2e e3ˇ ddˇZ3e e4ˇ ddˇZ4e e5ˇ ddˇZ5e e6ˇ ddˇZ6e e7ˇ ddˇZ7e e8ˇ ddˇZ8e e9ˇ ddˇZ9e e:ˇ ddˇZ:e e;ˇ ddˇZ;e e<ˇ ddˇZ<dS )aS  OpenGL extension NV.vertex_program

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

Overview (from the spec)
	
	Unextended OpenGL mandates a certain set of configurable per-vertex
	computations defining vertex transformation, texture coordinate
	generation and transformation, and lighting.  Several extensions
	have added further per-vertex computations to OpenGL.  For example,
	extensions have defined new texture coordinate generation modes
	(ARB_texture_cube_map, NV_texgen_reflection, NV_texgen_emboss), new
	vertex transformation modes (EXT_vertex_weighting), new lighting modes
	(OpenGL 1.2's separate specular and rescale normal functionality),
	several modes for fog distance generation (NV_fog_distance), and
	eye-distance point size attenuation (EXT_point_parameters).
	
	Each such extension adds a small set of relatively inflexible
	per-vertex computations.
	
	This inflexibility is in contrast to the typical flexibility provided
	by the underlying programmable floating point engines (whether
	micro-coded vertex engines, DSPs, or CPUs) that are traditionally used
	to implement OpenGL's per-vertex computations.  The purpose of this
	extension is to expose to the OpenGL application writer a significant
	degree of per-vertex programmability for computing vertex parameters.
	
	For the purposes of discussing this extension, a vertex program is
	a sequence of floating-point 4-component vector operations that
	determines how a set of program parameters (defined outside of
	OpenGL's begin/end pair) and an input set of per-vertex parameters
	are transformed to a set of per-vertex output parameters.
	
	The per-vertex computations for standard OpenGL given a particular
	set of lighting and texture coordinate generation modes (along with
	any state for extensions defining per-vertex computations) is, in
	essence, a vertex 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 vertex
	program instruction sequences for application-defined vertex programs.
	In order to define such vertex programs, this extension defines
	a vertex 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 vertex programming model is designed for efficient
	hardware implementation and to support a wide variety of vertex
	programs.  By design, the entire set of existing vertex programs
	defined by existing OpenGL per-vertex computation extensions can be
	implemented using the extension's vertex programming model.

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/NV/vertex_program.txt
é    )ÚplatformÚconstantÚarrays)Ú
extensionsÚwrapperN)Ú_typesÚ_glgets)Ú*)Ú_EXTENSION_NAMEc                  C   s   ddl m}  |  tˇS )z=Return boolean indicating whether this extension is availabler   ©r   )ÚOpenGLr   ZhasGLExtensionr
   r   © r   úY/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/OpenGL/GL/NV/vertex_program.pyÚglInitVertexProgramNVB   s    r   ZprogramsZ
residencesc                 C   s   | fS ©Nr   ©Úxr   r   r   Ú<lambda>K   ó    r   ÚnT)ÚsizeZpnameArgÚorPassInÚparamsé   c                 C   s   | fS r   r   r   r   r   r   r   U   r   )r   )r   r   )é   ZpointerÚprogramÚvr   é   é   )=Ú__doc__r   r   r   r   r   r   ÚctypesZOpenGL.raw.GLr   r   ZOpenGL.raw.GL.NV.vertex_programr
   r   ZglAreProgramsResidentNVZsetInputArraySizeZ	setOutputZglDeleteProgramsNVZglExecuteProgramNVZglGenProgramsNVZglGetProgramParameterdvNVZglGetProgramParameterfvNVZglGetProgramivNVZglGetTrackMatrixivNVZglGetVertexAttribdvNVZglGetVertexAttribfvNVZglGetVertexAttribivNVZglGetVertexAttribPointervNVZglLoadProgramNVZglProgramParameter4dvNVZglProgramParameter4fvNVZglProgramParameters4dvNVZglProgramParameters4fvNVZglRequestResidentProgramsNVZglVertexAttribPointerNVZglVertexAttrib1dvNVZglVertexAttrib1fvNVZglVertexAttrib1svNVZglVertexAttrib2dvNVZglVertexAttrib2fvNVZglVertexAttrib2svNVZglVertexAttrib3dvNVZglVertexAttrib3fvNVZglVertexAttrib3svNVZglVertexAttrib4dvNVZglVertexAttrib4fvNVZglVertexAttrib4svNVZglVertexAttrib4ubvNVZglVertexAttribs1dvNVZglVertexAttribs1fvNVZglVertexAttribs1svNVZglVertexAttribs2dvNVZglVertexAttribs2fvNVZglVertexAttribs2svNVZglVertexAttribs3dvNVZglVertexAttribs3fvNVZglVertexAttribs3svNVZglVertexAttribs4dvNVZglVertexAttribs4fvNVZglVertexAttribs4svNVZglVertexAttribs4ubvNVr   r   r   r   Ú<module>   s   :
˙ý
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙
˙