OpenGL.GL.SUN.triangle_list
OpenGL extension SUN.triangle_list
This module customises the behaviour of the
OpenGL.raw.GL.SUN.triangle_list to provide a more
Python-friendly API
Overview (from the spec)
OpenGL has two chained triangle primitives, TRIANGLE_STRIP and
TRIANGLE_FAN. For multiple, consecutive triangle strips or
triangle fans, the overhead of Begin and End, or separate calls to
DrawArrays, can be significant depending on the number of triangles
per strip or fan.
Many surface tessellators produce triangle strips with very few
triangles per strip before needing to restart a new strip. Even
sophisticated tessellators typically need to restart a new strip,
or switch from a triangle strip to a triangle fan, many times
within a single object. Such tessellators can often produce a more
efficient tessellation--one with fewer vertices--by mixing strips
and fans within the same object. The ability to switch from one to
the other without restarting the strip or fan yields even more
savings. Unfortunately, the overhead of switching from a triangle
strip to a triangle fan, or vice versa, can reduce, or even
eliminate the benefit gained from reducing the number of vertices.
A new triangle list primitive, along with an associated replacement
code attribute, is defined by this extension to allow multiple
triangle strips and fans to be specified within the same Begin/End
pair or from a single call to DrawArrays. The triangle list
extension also provides the means to switch between triangle strips
and triangle fans with or without restarting the strip or fan.
TRIANGLE_LIST is a new primitive type (i.e., new Begin mode) that
uses the ReplacementCodeSUN state attribute to determine whether the
current vertex replaces the oldest vertex, as in a triangle strip,
the middle vertex, as in a triangle fan, or restarts a new chained
triangle list. The first vertex of a new triangle list is
implicitly treated as a RESTART. The first three vertices complete
the first triangle, after which the replacement codes of the vertex
are used. The two vertices immediately following a
restart--including the implicit restart on the first vertex--are
ignored. The ReplacementCodeSUN attribute is part of the vertex
state, and is only used by the TRIANGLE_LIST primitive.
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/SUN/triangle_list.txt
Functions
Constants
GL_R1UI_C3F_V3F_SUN (34246)
GL_R1UI_C4F_N3F_V3F_SUN (34248)
GL_R1UI_C4UB_V3F_SUN (34245)
GL_R1UI_N3F_V3F_SUN (34247)
GL_R1UI_T2F_C4F_N3F_V3F_SUN (34251)
GL_R1UI_T2F_N3F_V3F_SUN (34250)
GL_R1UI_T2F_V3F_SUN (34249)
GL_R1UI_V3F_SUN (34244)
GL_REPLACE_MIDDLE_SUN (2)
GL_REPLACE_OLDEST_SUN (3)
GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN (34243)
GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN (34242)
GL_REPLACEMENT_CODE_ARRAY_SUN (34240)
GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN (34241)
GL_REPLACEMENT_CODE_SUN (33240)
GL_RESTART_SUN (1)
GL_TRIANGLE_LIST_SUN (33239)