15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci EXT_static_vertex_array 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_EXT_static_vertex_array 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciVersion 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci $Date: 1997/09/17 18:24:20 $ $Revision: 1.1 $ 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNumber 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci ?? 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciDependencies 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci None 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciOverview 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci This extension defines an interface which allows vertex array 245bd8deadSopenharmony_ci data to be cached or pre-compiled for more efficient rendering. This 255bd8deadSopenharmony_ci is useful for implementations which can cache the transformed results 265bd8deadSopenharmony_ci of array data for reuse by several DrawArrays, ArrayElement, or 275bd8deadSopenharmony_ci DrawElements commands. It is also useful for implementations which 285bd8deadSopenharmony_ci can transfer array data to fast memory for more efficient processing. 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ci For example, rendering an M by N mesh of quadrilaterals can be 315bd8deadSopenharmony_ci accomplished by setting up vertex arrays containing all of the 325bd8deadSopenharmony_ci vertexes in the mesh and issuing M DrawElements commands each of 335bd8deadSopenharmony_ci which operate on 2 * N vertexes. Each DrawElements command after 345bd8deadSopenharmony_ci the first will share N vertexes with the preceding DrawElements 355bd8deadSopenharmony_ci command. If the vertex array data is locked while the DrawElements 365bd8deadSopenharmony_ci commands are executed, then OpenGL may be able to transform each 375bd8deadSopenharmony_ci of these shared vertexes just once. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciNew Procedures and Functions 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci void LockArraysEXT (sizei count) 425bd8deadSopenharmony_ci void UnlockArraysEXT (void) 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ciNew Tokens 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, 475bd8deadSopenharmony_ci GetFloatv, and GetDoublev: 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci ARRAY_ELEMENT_LOCK_COUNT_EXT 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.1 Specification (OpenGL Operation) 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ci After the discussion of InterleavedArrays, add a description of 545bd8deadSopenharmony_ci array compiling/locking. 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci The currently enabled vertex arrays can be locked with the command 575bd8deadSopenharmony_ci LockArraysEXT. When the vertex arrays are locked, the data 585bd8deadSopenharmony_ci specified by the currently enabled vertex arrays is considered 595bd8deadSopenharmony_ci to be static by GL. An implementation can delay the referencing 605bd8deadSopenharmony_ci of the data used by the commands DrawArrays, ArrayElement or 615bd8deadSopenharmony_ci DrawElements or pre-process the array data or cache the transformed 625bd8deadSopenharmony_ci vertex data associated with the currently enabled vertex arrays. 635bd8deadSopenharmony_ci The vertex arrays are unlocked by the command UnlockArraysEXT. 645bd8deadSopenharmony_ci The lock count, ARRAY_ELEMENT_LOCK_COUNT_EXT, is reset 655bd8deadSopenharmony_ci to 0 when the vertex arrays are unlocked. 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ci The error INVALID_OPERATION is generated if any array pointer 685bd8deadSopenharmony_ci command such as EdgeFlagPointer, TexCoordPointer, ColorPointer, 695bd8deadSopenharmony_ci IndexPointer, NormalPointer, VertexPointer or InterleavedArrays 705bd8deadSopenharmony_ci or EnableClientState/DisableClientState with array set 715bd8deadSopenharmony_ci to EDGE_FLAG_ARRAY, TEXTURE_COORD_ARRAY, COLOR_ARRAY, 725bd8deadSopenharmony_ci INDEX_ARRAY, NORMAL_ARRAY or VERTEX_ARRAY is executed between 735bd8deadSopenharmony_ci the execution of LocakArraysEXT and the corresponding 745bd8deadSopenharmony_ci UnlockArraysExt. 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ci Between LockArraysEXT and UnlockArraysEXT the application 775bd8deadSopenharmony_ci should ensure that none of the array data in the range 785bd8deadSopenharmony_ci specified by <count> are changed. Changes to the array data 795bd8deadSopenharmony_ci between the execution of LockArraysEXT and UnlockArraysEXT 805bd8deadSopenharmony_ci commands may affect calls may affect DrawArrays, ArrayElement, 815bd8deadSopenharmony_ci or DrawElements commands in non-sequential ways. 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ci While using a static vertex array, references to array elements 845bd8deadSopenharmony_ci by the commands DrawArrays, ArrayElement, or DrawElements which 855bd8deadSopenharmony_ci are outside of the range specified by <count> are undefined. 865bd8deadSopenharmony_ci 875bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.1 Specification (Rasterization) 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci None 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations 925bd8deadSopenharmony_ciand the Frame Buffer) 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci None 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.1 Specification (Special Functions) 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ci LockArraysEXT and UnlockArraysEXT are not complied into display lists 995bd8deadSopenharmony_ci but are executed immediately. 1005bd8deadSopenharmony_ci 1015bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.1 Specification (State and State Requests) 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci None 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ciAdditions to the GLX Specification 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ci None 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ciGLX Protocol 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci None 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ciErrors 1145bd8deadSopenharmony_ci 1155bd8deadSopenharmony_ci INVALID_VALUE is generated if LockArraysEXT parameter <count> is less than 1165bd8deadSopenharmony_ci or equal to zero. 1175bd8deadSopenharmony_ci 1185bd8deadSopenharmony_ci INVALID_OPERATION is generated if LockArraysEXT is called between execution 1195bd8deadSopenharmony_ci of LockArraysEXT and corresponding execution of UnlockArraysEXT. 1205bd8deadSopenharmony_ci 1215bd8deadSopenharmony_ci INVALID_OPERATION is generated if UnlockArraysEXT is called without a 1225bd8deadSopenharmony_ci corresponding previous execution of LockArraysEXT. 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci INVALID_OPERATION may be generated if LockArraysEXT or UnlockArraysEXT is called 1255bd8deadSopenharmony_ci between execution of Begin and the corresponding execution of End. 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ci INVALID_OPERATION is generated if any array pointer command such as 1285bd8deadSopenharmony_ci EdgeFlagPointer, TexCoordPointer, ColorPointer, IndexPointer, 1295bd8deadSopenharmony_ci NormalPointer, VertexPointer or InterleavedArrays 1305bd8deadSopenharmony_ci or EnableClientState/DisableClientState with array set 1315bd8deadSopenharmony_ci to EDGE_FLAG_ARRAY, TEXTURE_COORD_ARRAY, COLOR_ARRAY, 1325bd8deadSopenharmony_ci INDEX_ARRAY, NORMAL_ARRAY or VERTEX_ARRAY is executed between 1335bd8deadSopenharmony_ci the execution of LocakArraysEXT and the corresponding 1345bd8deadSopenharmony_ci UnlockArraysExt. 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ciNew State 1375bd8deadSopenharmony_ci Initial 1385bd8deadSopenharmony_ci Get Value Get Command Type Value Attrib 1395bd8deadSopenharmony_ci --------- ----------- ---- ------- ------ 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci ARRAY_ELEMENT_LOCK_COUNT_EXT GetIntegerv Z+ 0 client-vertex-array 1425bd8deadSopenharmony_ci 1435bd8deadSopenharmony_ciNew Implementation Dependent State 1445bd8deadSopenharmony_ci 1455bd8deadSopenharmony_ci None 1465bd8deadSopenharmony_ci 147