OpenGL.GL.ARB.fragment_program

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

Functions

Constants

GL_CURRENT_MATRIX_ARB (34369)
GL_CURRENT_MATRIX_STACK_DEPTH_ARB (34368)
GL_FRAGMENT_PROGRAM_ARB (34820)
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_ALU_INSTRUCTIONS_ARB (34827)
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_ALU_INSTRUCTIONS_ARB (34830)
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_NATIVE_TEX_INDIRECTIONS_ARB (34832)
GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB (34831)
GL_MAX_PROGRAM_PARAMETERS_ARB (34985)
GL_MAX_PROGRAM_TEMPORARIES_ARB (34981)
GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB (34829)
GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB (34828)
GL_MAX_TEXTURE_COORDS_ARB (34929)
GL_MAX_TEXTURE_IMAGE_UNITS_ARB (34930)
GL_PROGRAM_ALU_INSTRUCTIONS_ARB (34821)
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_ALU_INSTRUCTIONS_ARB (34824)
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_NATIVE_TEX_INDIRECTIONS_ARB (34826)
GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB (34825)
GL_PROGRAM_PARAMETERS_ARB (34984)
GL_PROGRAM_STRING_ARB (34344)
GL_PROGRAM_TEMPORARIES_ARB (34980)
GL_PROGRAM_TEX_INDIRECTIONS_ARB (34823)
GL_PROGRAM_TEX_INSTRUCTIONS_ARB (34822)
GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB (34998)
GL_TRANSPOSE_CURRENT_MATRIX_ARB (34999)