blob: 80e79949a269f2885c8b97d7e2a77e970da643de [file] [log] [blame]
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