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:



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)