15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ATI_vertex_streams
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ATI_vertex_streams
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Benj Lipchak, AMD (benj.lipchak 'at' amd.com)
125bd8deadSopenharmony_ci    Evan Hart, NVIDIA (ehart 'at' nvidia.com)
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciVersion
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    Date: 11/4/2006
175bd8deadSopenharmony_ci    Revision: 0.31
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciNumber
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    249
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciDependencies
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    OpenGL 1.0 is required.
265bd8deadSopenharmony_ci    ARB_vertex_blend is required.
275bd8deadSopenharmony_ci    This extension is written against the OpenGL 1.2.1 Specification.
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ciOverview
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    This extension adds the ability to handle sets of auxilliary
325bd8deadSopenharmony_ci    vertex and normal coordinates. These sets of auxilliary
335bd8deadSopenharmony_ci    coordinates are termed streams, and can be routed selectively
345bd8deadSopenharmony_ci    into the blend stages provided by the vertex blending extension.
355bd8deadSopenharmony_ci    This functionality enables software animation techniques such
365bd8deadSopenharmony_ci    as keyframe vertex morphing.
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ci    
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ciIP Status
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ci    Unknown, but believed to be none. 
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ciIssues
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ci     
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ciNew Procedures and Functions
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ci    void VertexStream{1234}{sifd}(enum stream, T coords)
515bd8deadSopenharmony_ci    void VertexStream{1234}{sifd}v(enum stream, T coords)
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    void NormalStream3{bsifd}(enum stream, T coords)
545bd8deadSopenharmony_ci    void NormalStream3{bsifd}v(enum stream, T coords)
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ci    void ClientActiveVertexStream(enum stream)
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    void VertexBlendEnv{if}(enum pname, T param)
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ciNew Tokens
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetIntegerv, GetFloatv, and
635bd8deadSopenharmony_ci    GetDoublev:
645bd8deadSopenharmony_ci
655bd8deadSopenharmony_ci      MAX_VERTEX_STREAMS_ATI           0x876B
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci    Accepted by the <stream> parameters of VertexStream and
685bd8deadSopenharmony_ci    ClientActiveVertexStream:
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci      VERTEX_STREAM0_ATI:              0x876C
715bd8deadSopenharmony_ci      VERTEX_STREAM1_ATI:              0x876D
725bd8deadSopenharmony_ci      VERTEX_STREAM2_ATI:              0x876E
735bd8deadSopenharmony_ci      VERTEX_STREAM3_ATI:              0x876F
745bd8deadSopenharmony_ci      VERTEX_STREAM4_ATI:              0x8770
755bd8deadSopenharmony_ci      VERTEX_STREAM5_ATI:              0x8771
765bd8deadSopenharmony_ci      VERTEX_STREAM6_ATI:              0x8772
775bd8deadSopenharmony_ci      VERTEX_STREAM7_ATI:              0x8773
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    Accepted by the <pname> parameter of VertexBlendEnv:
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci      VERTEX_SOURCE_ATI:               0x8774
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.2.1 Specification (Operation)
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ci    - (2.6, p. 12) Second paragraph changed to:
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci          "Each vertex is specified with two, three, or four
905bd8deadSopenharmony_ci          coordinates. In addition, current auxilliary vertices, 
915bd8deadSopenharmony_ci          a current normal, auxilliary normals, current texture
925bd8deadSopenharmony_ci          coordinates, and current color may be used in processing
935bd8deadSopenharmony_ci          each vertex. Normals are used by the GL in lighting
945bd8deadSopenharmony_ci          calculations; the current normals are three-dimensional
955bd8deadSopenharmony_ci          vectors that may be set by sending three coordinates that
965bd8deadSopenharmony_ci          specify them. Texture coordinates determine how a texture
975bd8deadSopenharmony_ci          image is mapped onto a primitive."
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci    - (2.6, p. 12) Added after the second paragraph:
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci          "Each auxilliary set of vertex and normal coordinates
1025bd8deadSopenharmony_ci          is refered to as a vertex stream. The vertex coordinate and
1035bd8deadSopenharmony_ci          normal for a vertex are the 0th stream, and each auxilliary
1045bd8deadSopenharmony_ci          set rpovided by the implementation after that is refered to
1055bd8deadSopenharmony_ci          as the ith stream. The number of streams supported by an
1065bd8deadSopenharmony_ci          implementation is return by Get when the pname parameter is
1075bd8deadSopenharmony_ci          MAX_VERTEX_STREAMS_ATI."
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    - (2.6.3, p. 19) First paragraph changed to:
1105bd8deadSopenharmony_ci
1115bd8deadSopenharmony_ci          "The only GL commands that are allowed within any Begin/End
1125bd8deadSopenharmony_ci          pairs are the commands for specifying vertex coordinates,
1135bd8deadSopenharmony_ci          auxilliary vertex coordinates, vertex color, normal
1145bd8deadSopenharmony_ci          coordinates, auxilliary normal coordinates, and texture
1155bd8deadSopenharmony_ci          coordinates (Vertex, VertexStream, Color, Index, Normal,
1165bd8deadSopenharmony_ci          NormalStream, TexCoord), the ArrayElement command (see
1175bd8deadSopenharmony_ci          section 2.8), the EvalCoord and EvalPoint commands (see
1185bd8deadSopenharmony_ci          section 5.1), commands for specifying lighting material
1195bd8deadSopenharmony_ci          parameters (Material commands; see section 2.13.2), display
1205bd8deadSopenharmony_ci          list invocation commands (CallList and CallLists; see
1215bd8deadSopenharmony_ci          section 5.4), and the EdgeFlag command. Executing any other
1225bd8deadSopenharmony_ci          GL command between the execution of a Begin and the
1235bd8deadSopenharmony_ci          corresponding execution of End results in the error
1245bd8deadSopenharmony_ci          INVALID_OPERATION. Executing Begin after Begin has already
1255bd8deadSopenharmony_ci          been executed but before an End is executed generates the
1265bd8deadSopenharmony_ci          INVALID_OPERATION error, as does executing End without
1275bd8deadSopenharmony_ci          a previous corresponding Begin."
1285bd8deadSopenharmony_ci
1295bd8deadSopenharmony_ci    - (2.7, p. 20) Added after the first paragraph:
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ci          "Alternatively, vertices and auxilliary vertices can be
1325bd8deadSopenharmony_ci          specified with the commands
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci              void VertexStream{234}{sifd}(enum stream, T coords)
1355bd8deadSopenharmony_ci              void VertexStream{234}{sifd}v(enum stream, T coords)
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ci          These commands operate identically the the corresponding
1385bd8deadSopenharmony_ci          Vertex commands, but they may specify which stream the
1395bd8deadSopenharmony_ci          vertex data is to be placed in. If the stream parameter
1405bd8deadSopenharmony_ci          specifies a stream greater than the one minus the maximum
1415bd8deadSopenharmony_ci          number of streams reported by Get, then the error
1425bd8deadSopenharmony_ci          INVALID_ENUM is generated."
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ci    - (2.7, p. 20) Added after the third paragraph:
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci          "The normals and auxilliary normals may also be specified
1475bd8deadSopenharmony_ci          with the commands
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci              void NormalStream3{bsifd}(enum stream, T coords)
1505bd8deadSopenharmony_ci              void NormalStream3{bsifd}v(enum stream, T coords)
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci          These commands operate identically to the corresponding
1535bd8deadSopenharmony_ci          Normal commands, but they allow the specification of which
1545bd8deadSopenharmony_ci          vertex stream the normal is to be used with. If the stream
1555bd8deadSopenharmony_ci          parameter is VERTEX_STREAM0_ATI, then this is the default
1565bd8deadSopenharmony_ci          current normal. Otherwise, it is one of the auxilliary
1575bd8deadSopenharmony_ci          normals. If the stream parameter specifies a stream greater
1585bd8deadSopenharmony_ci          than one minus the maximum number reported by Get, then
1595bd8deadSopenharmony_ci          the error INVALID_ENUM is generated."
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ci    - (2.8, p. 23) Added after the second paragraph:
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci          "Additionally, auxillary vertex and normal data can be 
1645bd8deadSopenharmony_ci          specified through the VertexPointer and NormalPointer
1655bd8deadSopenharmony_ci          commands. Whether these commands are affecting the primary
1665bd8deadSopenharmony_ci          coordinates or the auxilliary coordinates is controlled by
1675bd8deadSopenharmony_ci          the command:
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci            void ClientActiveVertexStream(enum stream)
1705bd8deadSopenharmony_ci
1715bd8deadSopenharmony_ci          This sets the current client vertex stream, so that all
1725bd8deadSopenharmony_ci          following VertexPointer and NormalPointer commands
1735bd8deadSopenharmony_ci          affect that client stream. If ClientActiveVertexStream
1745bd8deadSopenharmony_ci          is called with a stream greater than is reported as being
1755bd8deadSopenharmony_ci          supported by get, then the error INVALID_ENUM is
1765bd8deadSopenharmony_ci          generated."
1775bd8deadSopenharmony_ci
1785bd8deadSopenharmony_ci    - (2.10, p. 29) Added after the first paragraph:
1795bd8deadSopenharmony_ci
1805bd8deadSopenharmony_ci          "When vertex blending is enabled, and the vertex is
1815bd8deadSopenharmony_ci          being transformed by multiple modelview matrices,
1825bd8deadSopenharmony_ci          the auxiliary sets of vertex and normal data my be
1835bd8deadSopenharmony_ci          supplied to a vertex unit to be transformed. Each
1845bd8deadSopenharmony_ci          vertex unit transforms its currently selected stream.
1855bd8deadSopenharmony_ci          The active vertex stream for a vertex unit is specified
1865bd8deadSopenharmony_ci          by the command:
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ci            void VertexBlendEnv{if}(enum pname, T param)
1895bd8deadSopenharmony_ci
1905bd8deadSopenharmony_ci          This command changes the active vertex stream for the
1915bd8deadSopenharmony_ci          currently selected vertex stage. Param must be less than
1925bd8deadSopenharmony_ci          the maximum number of streams reported by get. The 
1935bd8deadSopenharmony_ci          select the current vertex stage to effect is done by
1945bd8deadSopenharmony_ci          calling MatrixMode with MODELVIEWn_ARB, where n is
1955bd8deadSopenharmony_ci          the vertex stage." 
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ciAdditions to Chapter 3:
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ci      None
2025bd8deadSopenharmony_ci
2035bd8deadSopenharmony_ciAdditions to Chapter 4:
2045bd8deadSopenharmony_ci
2055bd8deadSopenharmony_ci      None
2065bd8deadSopenharmony_ci
2075bd8deadSopenharmony_ciAdditions to Chapter 5:
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ci      Open issue with evaluators
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ciAdditions to Chapter 6:
2125bd8deadSopenharmony_ci
2135bd8deadSopenharmony_ci      Rather obvious changes to Get
2145bd8deadSopenharmony_ci
2155bd8deadSopenharmony_ciAdditions to Appendix A:
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ci      None
2185bd8deadSopenharmony_ci
2195bd8deadSopenharmony_ci
2205bd8deadSopenharmony_ci
2215bd8deadSopenharmony_ci      
222