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