XXX - Not complete yet!!! XXX - Obsolete; implemented as part of GL_SGIX_igloo_interface We still need to talk to myoung about error behavior. Name IGLOO_swap_triangle_strip_vertex_pointerXXX Name Strings GL_IGLOO_swap_triangle_strip_vertex_pointerXXX No name should be returned by glGetString, glXQueryExtensionsString, or gluGetString . The name string here is used solely in the registry. Version $Date: 1999/04/03 08:40:51 $ $Revision: 1.3 $ Number None Igloo extensions should be compatible with *ALL* other extensions. (i.e. igloo extensions must document their interactions with subsequent extensions preceding it, so there is no number). Dependencies None Overview This extensions allows a single triangle fan to be generated within a glBegin(GL_TRIANGLE_STRIP) . . .glEnd(); New Procedures and Functions void SwapTriangleStripVertexPointerXXX(void); New Tokens None Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) Note: It is not explicitely stated but glGetError returns INVALID OPERATION when this is called between glBegin and glEnd if this extension is not supported. Section 2.6.3 -- GL Commands within Begin/End The only GL command that are allowed within any Begin/End Pairs are the commands for specifying vertex coordinates, vertex color, normal coordinates, and texture coordinates (Vertex, Color, Index, Normal, TexCoord), EvalCoord and EvalPoint commands (see section 5.1) commands for specifying lighting material parameters (Material commnads: see section 2.12.2) display list invocation commands (callList and CallLists: see section 5.4), *SwapTriangleStripVertexPointerXXX* (see section 2.7) and the EdgeFlag command. Section 2.6.1 --- Begin and End Objects Triangle strips. second paragraph The state required to support triangle strips consists of a flag indicating if the first triangle has been completed, two stored processed vertices, (called vertex A and vertex B), and a one bit pointer indicating which stored vertex will be replaced with the next vertex. After a Begin(TRIANGLE_STRIP), the pointer is initialized to point to vertex A. Each vertex set between a Begin/End pair toggles the pointer. Therefore, the first vertex is stored as vertex A, the second stored as vertex B, the third stored as vertex A, and so on. ***SwapTriangleStripVertexPointerXXX causes the pointer to point to the vertex it is not pointing to. Therefore if the pointer points to vertex A then SwapTriangleStripVertexPointerXXX will cause it to point to vertex B and vice-versa. *** Any vertex after the second one sent forms a triangle from vertex A, vertex B, and the current vertex (in that order). same section the following should be appended to the end. SwapTriangleStripVertexPointerXXX has no effect unless it is called between a Begin with the argument TRIANGLE_STRIP, and the corresponding call to End. Additions to Chapter 3 of the 1.0 Specification (Rasterization) None Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and the Frame Buffer) None Additions to Chapter 5 of the 1.0 Specification (Special Functions) Currently Igloo doesn't use OpenGL display lists. But this command should be display listable. So it is *NOT* included in the set of commands which are *NOT* display listable. The way this is spec'd this will *NOT* generate an extra feedback vertex, or selection hit. So nothing is added here regarding feedback and selection. HOWEVER, if this is implemented in the future in software it is likely to be implemented by redundantly re-issuing the second to the last vertex issued, and this *WILL* generate a couple of feedback or selection vertices. Additions to Chapter 6 of the 1.0 Specification (State and State Requests) None Additions to the GLX Specification GLX Protocol This command does not need to be recognized by GLX. IGLOO doesn't use indirect rendering. Dependencies on SGI_extension_name None Errors This command should be a no-op for other primitive types (and outside of glBegin/glEnd.) However, this implies that the Error state knows if you are within Begin/End. and worse it means that it knows if you are generating a Triangle Strip. I'm assuming that if it is possible to flag an error it is also possible to ignore it. SO. . .there is no error generated outside of glBegin(GL_TRIANGLE_STRIP) glEnd() and so nothing is written into this section. Blythe said that he'd talk to Myoung and make sure that this is ok. New State * Description of all state values in table format. Note that client * state should have "client" listed in the Attrib column. Initial Get Value Get Command Type Value Attrib --------- ----------- ---- ------- ------ None New Implementation Dependent State * Description of all implementation dependent state in table format. Minimum Get Value Get Command Type Value --------- ----------- ---- ------- None