15bd8deadSopenharmony_ci
25bd8deadSopenharmony_ciName
35bd8deadSopenharmony_ci
45bd8deadSopenharmony_ci    SGIX_subdiv_patch
55bd8deadSopenharmony_ci
65bd8deadSopenharmony_ciName Strings
75bd8deadSopenharmony_ci
85bd8deadSopenharmony_ci    GL_SGIX_subdiv_patch
95bd8deadSopenharmony_ci
105bd8deadSopenharmony_ciVersion:
115bd8deadSopenharmony_ci
125bd8deadSopenharmony_ci    $Date: 1999/12/28 01:40:36 $ $Revision: 1.4 $
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciNumber
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    XXX
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciDependencies
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    None
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciOverview:
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    This extension provides support for rendering subdivision surfaces.
255bd8deadSopenharmony_ci    Subdivision surfaces are defined as a repeated refinement of an
265bd8deadSopenharmony_ci    initial control mesh. The direct and simple representation of a surface
275bd8deadSopenharmony_ci    is attractive for rendering, where trimming bottlenecks can be avoided.
285bd8deadSopenharmony_ci    The key strengths of subdivision surfaces are:
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci        - Ability to render arbitrary meshes.
315bd8deadSopenharmony_ci        - Geometry compression, which is evident by the virtue of refinement.
325bd8deadSopenharmony_ci        - Continuous LOD control, that relieves the application from keeping
335bd8deadSopenharmony_ci        multiple geometry definitions, per-frame.
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    Triangular mesh representation is more convenient for rendering and is
365bd8deadSopenharmony_ci    considered first. Other representations as well as non-triangular ones
375bd8deadSopenharmony_ci    can be considered in a separate extension.
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    The API is mainly concerned with a geometrical primitive extracted from
405bd8deadSopenharmony_ci    the base mesh. The primitive is a topological definition for a triangle
415bd8deadSopenharmony_ci    pair and all its neighboring vertices. In addition, vertices and
425bd8deadSopenharmony_ci    edges may be tagged for representing sharp features. This primitive
435bd8deadSopenharmony_ci    is called the 'subdivision patch..
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ciIssues:
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    * We can reduce tokens for defining sharp vertices and have the
485bd8deadSopenharmony_ci    implementation detect most of the tags. Is that the right trade off?
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ci    * Is a per-corner maximum valence criteria preferred? (compared to
515bd8deadSopenharmony_ci    accumulative criteria)
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    * How do we fare against the recently presented surface simplification?
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    * View dependency is simple per-object but complex for partials.
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    * There seems to be a de-facto standard evolving in the industry
585bd8deadSopenharmony_ci    which uses quadrilaterals as the base primitive. Currently, we are
595bd8deadSopenharmony_ci    providing Loop's technique. The API (for the  most part) remains
605bd8deadSopenharmony_ci    the same. Shall we expose both techniques?
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ciTODO:
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci    * fragment light space dependencies (e.g. tangent and binorm).
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ciNew Procedures and Functions:
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ci    void glSubdivPatchSGIX(const void **vertexData,
695bd8deadSopenharmony_ci                        const void **vertexTag,
705bd8deadSopenharmony_ci                        const void **edgeTag);
715bd8deadSopenharmony_ci    void glSubdivPatchParameterfSGIX(GLenum pname, GLfloat param);
725bd8deadSopenharmony_ci    void glSubdivPatchParameteriSGIX(GLenum pname, GLint param);
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ciNew Tokens:
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    Accepted by vertexTag:
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci        GL_SUBDIVPATCH_SMOOTH_SGIX
795bd8deadSopenharmony_ci        GL_SUBDIVPATCH_DART_BIT_SGIX
805bd8deadSopenharmony_ci        GL_SUBDIVPATCH_CREASE_REGULAR_BIT_SGIX
815bd8deadSopenharmony_ci        GL_SUBDIVPATCH_CREASE_IRREGULAR_BIT_SGIX
825bd8deadSopenharmony_ci        GL_SUBDIVPATCH_CORNER_BIT_SGIX
835bd8deadSopenharmony_ci        GL_SUBDIVPATCH_CONICAL_BIT_SGIX
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci    Accepted by edgeTag:
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ci        GL_SUBDIVPATCH_SMOOTH_SGIX
885bd8deadSopenharmony_ci        GL_SUBDIV_PATCH_SHARP_BIT_SGIX
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci    Accepted by the <pname> parameter of glSubdivPatchParameteriSGIX or
915bd8deadSopenharmony_ci    glSubdivPatchParameterfSGIX are:
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci        GL_SUBDIVPATCH_LEVEL_SGIX
945bd8deadSopenharmony_ci        GL_SUBDIVPATCH_FORMAT_SGIX
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci    Accepted by the <param> parameter GL_SUBDIVPATCH_FORMAT_SGIX of
975bd8deadSopenharmony_ci    glSubdivPatchParameteriSGIX or glSubdivPatchParameterfSGIX are:
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci        GL_V3F
1005bd8deadSopenharmony_ci        GL_C3F_V3F
1015bd8deadSopenharmony_ci        GL_T2F_V3F
1025bd8deadSopenharmony_ci        GL_T2F_C3F_V3F
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    Accepted by the pname parameter of GetBooleanv, GetIntegerv,
1055bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci        GL_SUBDIVPATCH_LEVEL_SGIX
1085bd8deadSopenharmony_ci        GL_SUBDIVPATCH_FORMAT_SGIX
1095bd8deadSopenharmony_ci        GL_SUBDIVPATCH_VALENCE_MAX
1105bd8deadSopenharmony_ci
1115bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation):
1125bd8deadSopenharmony_ci
1135bd8deadSopenharmony_ci    None
1145bd8deadSopenharmony_ci
1155bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization):
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ci    None
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
1205bd8deadSopenharmony_ciand the Frame Buffer):
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    None
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions):
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci    5.7 Subdivision Surfaces
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ci    [This part to be filled out with operation details.]
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests):
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    None
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ciAdditions to the GLX Specification:
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci    None
1375bd8deadSopenharmony_ci
1385bd8deadSopenharmony_ciDependencies on SGI_extension_name:
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci    None
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ciErrors:
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ci    INVALID_ENUM is generated if the <pname> parameter is
1455bd8deadSopenharmony_ci    not GL_SUBDIVPATCH_LEVEL_SGIX or GL_SUBDIVPATCH_FORMAT_SGIX.
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci    INVALID_ENUM is generated if the <param> parameter is not
1485bd8deadSopenharmony_ci    one of GL_V3F, GL_C4UB_V3F, GL_T2F_V3F, or GL_T2F_C4UB_V3F, when the
1495bd8deadSopenharmony_ci    <pname> parameter is GL_SUBDIVPATCH_FORMAT_SGIX.
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    INVALID_OPERATION is generated if any of the valence counts exceeds
1525bd8deadSopenharmony_ci    GL_SUBDIVPATCH_VALENCE_MAX_SGIX.
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ciNew State:
1555bd8deadSopenharmony_ci
1565bd8deadSopenharmony_ci    Get Value                   Get Command     Type    Initial Value
1575bd8deadSopenharmony_ci    ---------                   -----------     ----    ------------
1585bd8deadSopenharmony_ci    GL_SUBDIVPATCH_LEVEL_SGIX   GetFloatv       F       3
1595bd8deadSopenharmony_ci    GL_SUBDIVPATCH_FORMAT_SGIX  GetIntegerv     I       GL_V3F
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ciNew Implementation Dependent State
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    None
1645bd8deadSopenharmony_ci
165