OpenGL.GL.ARB.vertex_program

OpenGL extension ARB.vertex_program
This module customises the behaviour of the OpenGL.raw.GL.ARB.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 (ARB_vertex_blend, 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/ARB_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 result 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/ARB/vertex_program.txt

Functions

Constants

GL_COLOR_SUM_ARB (33880)
GL_CURRENT_MATRIX_ARB (34369)
GL_CURRENT_MATRIX_STACK_DEPTH_ARB (34368)
GL_CURRENT_VERTEX_ATTRIB_ARB (34342)
GL_MATRIX0_ARB (35008)
GL_MATRIX10_ARB (35018)
GL_MATRIX11_ARB (35019)
GL_MATRIX12_ARB (35020)
GL_MATRIX13_ARB (35021)
GL_MATRIX14_ARB (35022)
GL_MATRIX15_ARB (35023)
GL_MATRIX16_ARB (35024)
GL_MATRIX17_ARB (35025)
GL_MATRIX18_ARB (35026)
GL_MATRIX19_ARB (35027)
GL_MATRIX1_ARB (35009)
GL_MATRIX20_ARB (35028)
GL_MATRIX21_ARB (35029)
GL_MATRIX22_ARB (35030)
GL_MATRIX23_ARB (35031)
GL_MATRIX24_ARB (35032)
GL_MATRIX25_ARB (35033)
GL_MATRIX26_ARB (35034)
GL_MATRIX27_ARB (35035)
GL_MATRIX28_ARB (35036)
GL_MATRIX29_ARB (35037)
GL_MATRIX2_ARB (35010)
GL_MATRIX30_ARB (35038)
GL_MATRIX31_ARB (35039)
GL_MATRIX3_ARB (35011)
GL_MATRIX4_ARB (35012)
GL_MATRIX5_ARB (35013)
GL_MATRIX6_ARB (35014)
GL_MATRIX7_ARB (35015)
GL_MATRIX8_ARB (35016)
GL_MATRIX9_ARB (35017)
GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB (34993)
GL_MAX_PROGRAM_ATTRIBS_ARB (34989)
GL_MAX_PROGRAM_ENV_PARAMETERS_ARB (34997)
GL_MAX_PROGRAM_INSTRUCTIONS_ARB (34977)
GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB (34996)
GL_MAX_PROGRAM_MATRICES_ARB (34351)
GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB (34350)
GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB (34995)
GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB (34991)
GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB (34979)
GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB (34987)
GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB (34983)
GL_MAX_PROGRAM_PARAMETERS_ARB (34985)
GL_MAX_PROGRAM_TEMPORARIES_ARB (34981)
GL_MAX_VERTEX_ATTRIBS_ARB (34921)
GL_PROGRAM_ADDRESS_REGISTERS_ARB (34992)
GL_PROGRAM_ATTRIBS_ARB (34988)
GL_PROGRAM_BINDING_ARB (34423)
GL_PROGRAM_ERROR_POSITION_ARB (34379)
GL_PROGRAM_ERROR_STRING_ARB (34932)
GL_PROGRAM_FORMAT_ARB (34934)
GL_PROGRAM_FORMAT_ASCII_ARB (34933)
GL_PROGRAM_INSTRUCTIONS_ARB (34976)
GL_PROGRAM_LENGTH_ARB (34343)
GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB (34994)
GL_PROGRAM_NATIVE_ATTRIBS_ARB (34990)
GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB (34978)
GL_PROGRAM_NATIVE_PARAMETERS_ARB (34986)
GL_PROGRAM_NATIVE_TEMPORARIES_ARB (34982)
GL_PROGRAM_PARAMETERS_ARB (34984)
GL_PROGRAM_STRING_ARB (34344)
GL_PROGRAM_TEMPORARIES_ARB (34980)
GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB (34998)
GL_TRANSPOSE_CURRENT_MATRIX_ARB (34999)
GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB (34338)
GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB (34922)
GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB (34373)
GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB (34339)
GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB (34340)
GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB (34341)
GL_VERTEX_PROGRAM_ARB (34336)
GL_VERTEX_PROGRAM_POINT_SIZE_ARB (34370)
GL_VERTEX_PROGRAM_TWO_SIDE_ARB (34371)