15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci APPLE_vertex_program_evaluators 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_APPLE_vertex_program_evaluators 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Bob Beretta, Apple Inc. (beretta 'at' apple.com) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciVersion 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci 1.0 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciNumber 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci 369 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ciDependencies 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci This extension requires ARB_vertex_program. 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ciOverview 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ci This extension allows the one- and two-dimensional evaluators to be used 285bd8deadSopenharmony_ci with vertex program attributes. The operation of this extension is 295bd8deadSopenharmony_ci precisely analogous to the operation of the normal evaluators. 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ci Where normal evaluators are enabled with Enable(MAP1_VERTEX_3), for 325bd8deadSopenharmony_ci example, attribute evaluators are enabled with 335bd8deadSopenharmony_ci EnableVertexAttribAPPLE(index, VERTEX_ATTRIB_MAP1_APPLE). 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci Where the size (1, 2, 3, or 4) of a normal evaluator is embedded in the 365bd8deadSopenharmony_ci token for that evaluator (for example, MAP1_VERTEX_3 has size 3), 375bd8deadSopenharmony_ci attribute evaluators give the size as an argument to MapVertexAttrib**APPLE. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci The 1D and 2D evaluator order, domain, and coefficients are given as 405bd8deadSopenharmony_ci arguments to MapVertexAttrib**APPLE, with exactly the same meaning and 415bd8deadSopenharmony_ci restrictions as the same arguments to Map1f, Map2f, Map1d, & Map2d. 425bd8deadSopenharmony_ci The evaluator order, domain, and coefficients may be queried with 435bd8deadSopenharmony_ci GetVertexAttrib*vARB, with the same operation as GetMap*v. 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ciIssues 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci (1) Normal evaluators provide separate storage for the coefficients of 485bd8deadSopenharmony_ci each size of each vertex element. For example, GL_MAP1_VERTEX_3 495bd8deadSopenharmony_ci and GL_MAP1_VERTEX_4 indentify separate storage for 3-element vertex 505bd8deadSopenharmony_ci coefficients and 4-element vertex coefficients. Does this extension 515bd8deadSopenharmony_ci provide separate storage for each possible attribute size, 1, 2, 3, & 4? 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ci RESOLVED: No. Size is given as a parameter to MapVertexAttrib**APPLE. 545bd8deadSopenharmony_ci Storage is only provided for one set of coefficients per vertex attrib 555bd8deadSopenharmony_ci index. If MapVertexAttrib**APPLE is called with a <size> of 3, the 565bd8deadSopenharmony_ci coefficients associated with any other <size> are replaced. 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ciNew Procedures and Functions 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci void EnableVertexAttribAPPLE(uint index, enum pname); 615bd8deadSopenharmony_ci void DisableVertexAttribAPPLE(uint index, enum pname); 625bd8deadSopenharmony_ci boolean IsVertexAttribEnabledAPPLE(uint index, enum pname); 635bd8deadSopenharmony_ci void MapVertexAttrib1dAPPLE(uint index, uint size, double u1, double u2, 645bd8deadSopenharmony_ci int stride, int order, const double *points); 655bd8deadSopenharmony_ci void MapVertexAttrib1fAPPLE(uint index, uint size, float u1, float u2, 665bd8deadSopenharmony_ci int stride, int order, const float *points); 675bd8deadSopenharmony_ci void MapVertexAttrib2dAPPLE(uint index, uint size, double u1, double u2, 685bd8deadSopenharmony_ci int ustride, int uorder, double v1, double v2, int vstride, int vorder, 695bd8deadSopenharmony_ci const double *points); 705bd8deadSopenharmony_ci void MapVertexAttrib2fAPPLE(uint index, uint size, float u1, float u2, 715bd8deadSopenharmony_ci int ustride, int uorder, float v1, float v2, int vstride, int vorder, 725bd8deadSopenharmony_ci const float *points); 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ciNew Tokens 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ci Accepted by the <pname> parameter of EnableVertexAttribAPPLE, 775bd8deadSopenharmony_ci DisableVertexAttribAPPLE, and IsVertexAttribEnabledAPPLE. 785bd8deadSopenharmony_ci 795bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP1_APPLE 0x8A00 805bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP2_APPLE 0x8A01 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetVertexAttribdvARB, 835bd8deadSopenharmony_ci GetVertexAttribfvARB, and GetVertexAttribivARB. 845bd8deadSopenharmony_ci 855bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 865bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 875bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 885bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 895bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 905bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 915bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 925bd8deadSopenharmony_ci VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ciErrors 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci The error INVALID_VALUE is generated by EnableVertexAttribAPPLE, 975bd8deadSopenharmony_ci DisableVertexAttribAPPLE, IsVertexAttribEnabledAPPLE, or 985bd8deadSopenharmony_ci MapVertexAttrib**APPLE if <index> is greater than or equal to 995bd8deadSopenharmony_ci MAX_VERTEX_ATTRIBS_ARB. 1005bd8deadSopenharmony_ci 1015bd8deadSopenharmony_ci The error INVALID_ENUM is generated by EnableVertexAttribAPPLE, 1025bd8deadSopenharmony_ci DisableVertexAttribAPPLE, or IsVertexAttribEnabledAPPLE if <pname> 1035bd8deadSopenharmony_ci is not VERTEX_ATTRIB_MAP1_APPLE or VERTEX_ATTRIB_MAP2_APPLE. 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci The error INVALID_VALUE is generated by MapVertexAttrib**APPLE if 1065bd8deadSopenharmony_ci <size> is less than 1 or greater than 4. 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci The error INVALID_VALUE is generated by MapVertexAttrib1*APPLE if 1095bd8deadSopenharmony_ci <order> is less than 1 or greater than MAX_EVAL_ORDER. 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci The error INVALID_VALUE is generated by MapVertexAttrib2*APPLE if 1125bd8deadSopenharmony_ci <uorder> or <vorder> are less than 1 or greater than MAX_EVAL_ORDER. 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ci The error INVALID_VALUE is generated by MapVertexAttrib1*APPLE if 1155bd8deadSopenharmony_ci <u1> is equal to <u2>. 1165bd8deadSopenharmony_ci 1175bd8deadSopenharmony_ci The error INVALID_VALUE is generated by MapVertexAttrib2*APPLE if 1185bd8deadSopenharmony_ci <u1> is equal to <u2> or <v1> is equal to <v2>. 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ci The error INVALID_VALUE is generated by MapVertexAttrib1*APPLE if 1215bd8deadSopenharmony_ci <stride> is less than <size>. 1225bd8deadSopenharmony_ci 1235bd8deadSopenharmony_ci The error INVALID_VALUE is generated by MapVertexAttrib1*APPLE if 1245bd8deadSopenharmony_ci <ustride> is less than <size> or if <vstride> is less than size. 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ciNew State 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ciGet Value Type Get Command Initial Value Description Section 1295bd8deadSopenharmony_ci------------------------------ ------- -------------------------- ------------- ----------------- ------------ 1305bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP1_APPLE 16+xB IsVertexAttribEnabledAPPLE False 1D evaluator enable, eval 1315bd8deadSopenharmony_ci enabled 1325bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP2_APPLE 16+xB IsVertexAttribEnabledAPPLE False 2D evaluator enable, eval 1335bd8deadSopenharmony_ci enabled 1345bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP1_SIZE_APPLE 16+xZ4 GetVertexAttribivARB 4 1D evaluator eval 1355bd8deadSopenharmony_ci size 1365bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP2_SIZE_APPLE 16+xZ4 GetVertexAttribivARB 4 2D evaluator eval 1375bd8deadSopenharmony_ci size 1385bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP1_ORDER_APPLE 16+xZ+ GetVertexAttribivARB 1 1D evaluator eval 1395bd8deadSopenharmony_ci order 1405bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP2_ORDER_APPLE 32+xZ+ GetVertexAttribivARB 1, 1 2D evaluator eval 1415bd8deadSopenharmony_ci order 1425bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP1_COEFF_APPLE N+xRn GetVertexAttribfvARB 0, 0, 0, 1 1D evaluator eval 1435bd8deadSopenharmony_ci coefficients 1445bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP2_COEFF_APPLE N+xM+xRn GetVertexAttribfvARB 0, 0, 0, 1 2D evaluator eval 1455bd8deadSopenharmony_ci coefficients 1465bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP1_DOMAIN_APPLE 2+xR GetVertexAttribfvARB 0, 1 1D evaluator eval 1475bd8deadSopenharmony_ci domain 1485bd8deadSopenharmony_ciVERTEX_ATTRIB_MAP2_DOMAIN_APPLE 4+xR GetVertexAttribfvARB 0, 1, 0, 1 2D evaluator eval 1495bd8deadSopenharmony_ci domain 1505bd8deadSopenharmony_ciNew Implementation Dependent State 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci None 1535bd8deadSopenharmony_ci 154