OpenGL.GL.NV.vertex_program
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
Functions
Constants
GL_ATTRIB_ARRAY_POINTER_NV (34373)
GL_ATTRIB_ARRAY_SIZE_NV (34339)
GL_ATTRIB_ARRAY_STRIDE_NV (34340)
GL_ATTRIB_ARRAY_TYPE_NV (34341)
GL_CURRENT_ATTRIB_NV (34342)
GL_CURRENT_MATRIX_NV (34369)
GL_CURRENT_MATRIX_STACK_DEPTH_NV (34368)
GL_IDENTITY_NV (34346)
GL_INVERSE_NV (34347)
GL_INVERSE_TRANSPOSE_NV (34349)
GL_MAP1_VERTEX_ATTRIB0_4_NV (34400)
GL_MAP1_VERTEX_ATTRIB10_4_NV (34410)
GL_MAP1_VERTEX_ATTRIB11_4_NV (34411)
GL_MAP1_VERTEX_ATTRIB12_4_NV (34412)
GL_MAP1_VERTEX_ATTRIB13_4_NV (34413)
GL_MAP1_VERTEX_ATTRIB14_4_NV (34414)
GL_MAP1_VERTEX_ATTRIB15_4_NV (34415)
GL_MAP1_VERTEX_ATTRIB1_4_NV (34401)
GL_MAP1_VERTEX_ATTRIB2_4_NV (34402)
GL_MAP1_VERTEX_ATTRIB3_4_NV (34403)
GL_MAP1_VERTEX_ATTRIB4_4_NV (34404)
GL_MAP1_VERTEX_ATTRIB5_4_NV (34405)
GL_MAP1_VERTEX_ATTRIB6_4_NV (34406)
GL_MAP1_VERTEX_ATTRIB7_4_NV (34407)
GL_MAP1_VERTEX_ATTRIB8_4_NV (34408)
GL_MAP1_VERTEX_ATTRIB9_4_NV (34409)
GL_MAP2_VERTEX_ATTRIB0_4_NV (34416)
GL_MAP2_VERTEX_ATTRIB10_4_NV (34426)
GL_MAP2_VERTEX_ATTRIB11_4_NV (34427)
GL_MAP2_VERTEX_ATTRIB12_4_NV (34428)
GL_MAP2_VERTEX_ATTRIB13_4_NV (34429)
GL_MAP2_VERTEX_ATTRIB14_4_NV (34430)
GL_MAP2_VERTEX_ATTRIB15_4_NV (34431)
GL_MAP2_VERTEX_ATTRIB1_4_NV (34417)
GL_MAP2_VERTEX_ATTRIB2_4_NV (34418)
GL_MAP2_VERTEX_ATTRIB3_4_NV (34419)
GL_MAP2_VERTEX_ATTRIB4_4_NV (34420)
GL_MAP2_VERTEX_ATTRIB5_4_NV (34421)
GL_MAP2_VERTEX_ATTRIB6_4_NV (34422)
GL_MAP2_VERTEX_ATTRIB7_4_NV (34423)
GL_MAP2_VERTEX_ATTRIB8_4_NV (34424)
GL_MAP2_VERTEX_ATTRIB9_4_NV (34425)
GL_MATRIX0_NV (34352)
GL_MATRIX1_NV (34353)
GL_MATRIX2_NV (34354)
GL_MATRIX3_NV (34355)
GL_MATRIX4_NV (34356)
GL_MATRIX5_NV (34357)
GL_MATRIX6_NV (34358)
GL_MATRIX7_NV (34359)
GL_MAX_TRACK_MATRICES_NV (34351)
GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV (34350)
GL_MODELVIEW_PROJECTION_NV (34345)
GL_PROGRAM_ERROR_POSITION_NV (34379)
GL_PROGRAM_LENGTH_NV (34343)
GL_PROGRAM_PARAMETER_NV (34372)
GL_PROGRAM_RESIDENT_NV (34375)
GL_PROGRAM_STRING_NV (34344)
GL_PROGRAM_TARGET_NV (34374)
GL_TRACK_MATRIX_NV (34376)
GL_TRACK_MATRIX_TRANSFORM_NV (34377)
GL_TRANSPOSE_NV (34348)
GL_VERTEX_ATTRIB_ARRAY0_NV (34384)
GL_VERTEX_ATTRIB_ARRAY10_NV (34394)
GL_VERTEX_ATTRIB_ARRAY11_NV (34395)
GL_VERTEX_ATTRIB_ARRAY12_NV (34396)
GL_VERTEX_ATTRIB_ARRAY13_NV (34397)
GL_VERTEX_ATTRIB_ARRAY14_NV (34398)
GL_VERTEX_ATTRIB_ARRAY15_NV (34399)
GL_VERTEX_ATTRIB_ARRAY1_NV (34385)
GL_VERTEX_ATTRIB_ARRAY2_NV (34386)
GL_VERTEX_ATTRIB_ARRAY3_NV (34387)
GL_VERTEX_ATTRIB_ARRAY4_NV (34388)
GL_VERTEX_ATTRIB_ARRAY5_NV (34389)
GL_VERTEX_ATTRIB_ARRAY6_NV (34390)
GL_VERTEX_ATTRIB_ARRAY7_NV (34391)
GL_VERTEX_ATTRIB_ARRAY8_NV (34392)
GL_VERTEX_ATTRIB_ARRAY9_NV (34393)
GL_VERTEX_PROGRAM_BINDING_NV (34378)
GL_VERTEX_PROGRAM_NV (34336)
GL_VERTEX_PROGRAM_POINT_SIZE_NV (34370)
GL_VERTEX_PROGRAM_TWO_SIDE_NV (34371)
GL_VERTEX_STATE_PROGRAM_NV (34337)