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