• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2Name
3
4    SGIX_subdiv_patch
5
6Name Strings
7
8    GL_SGIX_subdiv_patch
9
10Version:
11
12    $Date: 1999/12/28 01:40:36 $ $Revision: 1.4 $
13
14Number
15
16    XXX
17
18Dependencies
19
20    None
21
22Overview:
23
24    This extension provides support for rendering subdivision surfaces.
25    Subdivision surfaces are defined as a repeated refinement of an
26    initial control mesh. The direct and simple representation of a surface
27    is attractive for rendering, where trimming bottlenecks can be avoided.
28    The key strengths of subdivision surfaces are:
29
30        - Ability to render arbitrary meshes.
31        - Geometry compression, which is evident by the virtue of refinement.
32        - Continuous LOD control, that relieves the application from keeping
33        multiple geometry definitions, per-frame.
34
35    Triangular mesh representation is more convenient for rendering and is
36    considered first. Other representations as well as non-triangular ones
37    can be considered in a separate extension.
38
39    The API is mainly concerned with a geometrical primitive extracted from
40    the base mesh. The primitive is a topological definition for a triangle
41    pair and all its neighboring vertices. In addition, vertices and
42    edges may be tagged for representing sharp features. This primitive
43    is called the 'subdivision patch..
44
45Issues:
46
47    * We can reduce tokens for defining sharp vertices and have the
48    implementation detect most of the tags. Is that the right trade off?
49
50    * Is a per-corner maximum valence criteria preferred? (compared to
51    accumulative criteria)
52
53    * How do we fare against the recently presented surface simplification?
54
55    * View dependency is simple per-object but complex for partials.
56
57    * There seems to be a de-facto standard evolving in the industry
58    which uses quadrilaterals as the base primitive. Currently, we are
59    providing Loop's technique. The API (for the  most part) remains
60    the same. Shall we expose both techniques?
61
62TODO:
63
64    * fragment light space dependencies (e.g. tangent and binorm).
65
66New Procedures and Functions:
67
68    void glSubdivPatchSGIX(const void **vertexData,
69                        const void **vertexTag,
70                        const void **edgeTag);
71    void glSubdivPatchParameterfSGIX(GLenum pname, GLfloat param);
72    void glSubdivPatchParameteriSGIX(GLenum pname, GLint param);
73
74New Tokens:
75
76    Accepted by vertexTag:
77
78        GL_SUBDIVPATCH_SMOOTH_SGIX
79        GL_SUBDIVPATCH_DART_BIT_SGIX
80        GL_SUBDIVPATCH_CREASE_REGULAR_BIT_SGIX
81        GL_SUBDIVPATCH_CREASE_IRREGULAR_BIT_SGIX
82        GL_SUBDIVPATCH_CORNER_BIT_SGIX
83        GL_SUBDIVPATCH_CONICAL_BIT_SGIX
84
85    Accepted by edgeTag:
86
87        GL_SUBDIVPATCH_SMOOTH_SGIX
88        GL_SUBDIV_PATCH_SHARP_BIT_SGIX
89
90    Accepted by the <pname> parameter of glSubdivPatchParameteriSGIX or
91    glSubdivPatchParameterfSGIX are:
92
93        GL_SUBDIVPATCH_LEVEL_SGIX
94        GL_SUBDIVPATCH_FORMAT_SGIX
95
96    Accepted by the <param> parameter GL_SUBDIVPATCH_FORMAT_SGIX of
97    glSubdivPatchParameteriSGIX or glSubdivPatchParameterfSGIX are:
98
99        GL_V3F
100        GL_C3F_V3F
101        GL_T2F_V3F
102        GL_T2F_C3F_V3F
103
104    Accepted by the pname parameter of GetBooleanv, GetIntegerv,
105    GetFloatv, and GetDoublev:
106
107        GL_SUBDIVPATCH_LEVEL_SGIX
108        GL_SUBDIVPATCH_FORMAT_SGIX
109        GL_SUBDIVPATCH_VALENCE_MAX
110
111Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation):
112
113    None
114
115Additions to Chapter 3 of the 1.0 Specification (Rasterization):
116
117    None
118
119Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
120and the Frame Buffer):
121
122    None
123
124Additions to Chapter 5 of the 1.0 Specification (Special Functions):
125
126    5.7 Subdivision Surfaces
127
128    [This part to be filled out with operation details.]
129
130Additions to Chapter 6 of the 1.0 Specification (State and State Requests):
131
132    None
133
134Additions to the GLX Specification:
135
136    None
137
138Dependencies on SGI_extension_name:
139
140    None
141
142Errors:
143
144    INVALID_ENUM is generated if the <pname> parameter is
145    not GL_SUBDIVPATCH_LEVEL_SGIX or GL_SUBDIVPATCH_FORMAT_SGIX.
146
147    INVALID_ENUM is generated if the <param> parameter is not
148    one of GL_V3F, GL_C4UB_V3F, GL_T2F_V3F, or GL_T2F_C4UB_V3F, when the
149    <pname> parameter is GL_SUBDIVPATCH_FORMAT_SGIX.
150
151    INVALID_OPERATION is generated if any of the valence counts exceeds
152    GL_SUBDIVPATCH_VALENCE_MAX_SGIX.
153
154New State:
155
156    Get Value                   Get Command     Type    Initial Value
157    ---------                   -----------     ----    ------------
158    GL_SUBDIVPATCH_LEVEL_SGIX   GetFloatv       F       3
159    GL_SUBDIVPATCH_FORMAT_SGIX  GetIntegerv     I       GL_V3F
160
161New Implementation Dependent State
162
163    None
164
165