XGL Test Suite User's Guide
  Search only this book
Download this book in PDF

Nurbs Test Descriptions

19

This chapter describes the Nurbs test programs. The following is defined for each test program:
  • Name of the test program
  • Test types (See the section "Denizen Test Types" on page 2 for the different test types.)
  • Description of the test program
  • Attributes tested by the program
  • Operators tested by the program
  • Output from the test program
· nubs_args
Test Types:INDEX, SM
Description:Varies the control points, knot vector, parameter range, and the order of curve. The first loop tests four examples of nonrational B-spline curves, while the final loop tests three examples of rational B-spline curves as the various parameters are varied.
Attributes Tested: XGL_CURVE_CONST_PARAM_SUBDIV_BETWEEN_KNOTS and Table 19-1, Column A at the end of this chapter
Operators Tested: xgl_context_new_frame
Output:· nubs_approxThe nonrational B-splines look like (1) a v-shaped line, (2) a musical note on its side, (3) a portion of a circle, and (4) a tooth with an indented right edge. The rational B-spline curves look like (1) a sleigh with a portion of the top missing, (2) a tooth with an indented right edge plus two rounded curves connected at a single point, and (3) a portion of an ellipse.
Test Types:INDEX, SM
Description:Sets XGL_CTX_CURVE_APPROX to various approximation methods in computing the nurbs curves for a quadratic B-spline
Attributes Tested: XGL_CTX_MAX_TESSELLATION
                    XGL_CURVE_UNUSED_BETWEEN_KNOTS
                    and Table 19-1, Column A at the end of this chapter
Operators Tested:   xgl_context_new_frame
                    xgl_nu_bspline_curve
                    xgl_object_set
                    xgl_object_get
Output:             Same curve displayed with different approximations

appears similar to the letter "e" rotated to point to the lower portion of the window raster
· nubs_attr
Test Types:INDEX, SM
Description:Tests that line attributes are also applied to nurbs curves using a quadratic B-spline.
Attributes Tested: See Table 19-1, Column B at the end of this chapter
Operators Tested: xgl_context_new_frame
                    xgl_nu_bspline_curve
                    xgl_object_set
Output:             Curve whose appearance looks like an ampersand on its

side that varies dependent on the line pattern and width of the line
· nubs_pttypes
Test Types:INDEX, SM
Description:Renders a quadratic spline curve using different point types to ensure the B-spline curves work with different point types. Tries different point types in the following order:
XGL_PT_I2D· nubs_hlhsr
Test Types:INDEX, SM
Description:Tests nurbs' hidden line-hidden surface removal. Draws the curve twice, once using a depth that is expected to be overdrawn by the more forward z-valued curve, and once using a depth that produces a more forward curve. Changes the colors for the two curves so that we can expect hidden line-hidden surface removal to display only one color. Checks that only this one color is displayed on the screen.
Attributes Tested: XGL_CURVE_UNUSED_BETWEEN_KNOTS and Table 19-1, Column A at the end of this chapter
Operators Tested: xgl_context_new_frame
Output:.....Curves displayed alternate between three alternatives: (1) a lemon on its side, (2) an ampersand on its side, and (3) the letter "e" rotated to point to the lower left portion of the window raster
· nubs0
Test Types:RGB, SM
Description:Varies the control points, knot vector, parameter range, and the order of curve in RGB. The first loop tests four examples of nonrational B-spline curves while the final loop tests three examples of rational B-spline curves, and the various parameters are varied. Same test as nubs_args but using an RGB raster.
Attributes Tested: XGL_CURVE_UNUSED_BETWEEN_KNOTS and Table 19-1, Column A at the end of this chapter
Operators Tested: xgl_context_new_frame
                    xgl_nu_bspline_curve
Output:             The nonrational B-splines look like (1) a v-shaped line, (2)

a musical note on its side, (3) a portion of a circle, and (4) a tooth with an indented right edge plus a small written "s" on its side. The rational B-spline curves look like (1) a sleigh with a portion of the top missing, (2) a tooth with an indented right edge plus two rounded curves connected at a single point, and (3) a portion of an ellipse.
· nubs1
Test Types:RGB, SM
Description:Sets XGL_CTX_CURVE_APPROX to various approximation methods in RGB version of nubs_approx
Attributes Tested: XGL_CTX_MAX_TESSELLATION
                    XGL_CURVE_UNUSED_BETWEEN_KNOTS
                    and Table 19-1, Column A at the end of this chapter
Operators Tested:   xgl_context_new_frame
                    xgl_nu_bspline_curve
                    xgl_object_get
                    xgl_object_set
Output:             Same curve displayed with different approximations

appears similar to the letter "e" rotated to point to the lower portion of the window raster
· nubs2
Test Types:RGB, SM
Description:XGL_PT_I2D· nubs3Renders a quadratic spline curve using different point types to ensure B-spline curves work with different point types. RGB version of nubs_pttypes. Different point types are tried in the following order:
Test Types:RGB, SM
Description:Tests RGB nurbs' hidden line-hidden surface removal. Draws the curve twice, once using a depth that is expected to be overdrawn by the more forward z-valued curve, and once using a depth that produces a more forward curve. Changes the colors for the two curves so that we can expect hidden line-hidden surface removal to display only one color. Checks that only this one color is displayed on the screen. Same as nubs_hlhsr but RGB instead of INDEX.
Attributes Tested: XGL_CURVE_UNUSED_BETWEEN_KNOTS and Table 19-1, Column A at the end of this chapter
Operators Tested: xgl_context_new_frame
                    xgl_nu_bspline_curve
                    xgl_object_set
Output:             Curves displayed alternate between three alternatives: (1)

a lemon on its side, (2) an ampersand on its side, and (3) the letter "e" rotated to point to the lower left portion of the window raster
· nubs4
Test Types:RGB, SM
Description:Varies the RGB colors randomly and try settings for XGL_CTX_MAX_TESSELATION from 128 down to 5 in equal decrements of 1 on a quadratic B-spline curve
Attributes Tested: XGL_CTX_MAX_TESSELATION XGL_CURVE_METRIC_VDC and Table 19-1, Column A at the end of this chapter
Operators Tested: xgl_context_new_frame
Output:· nubs5The curve looks like a cross between a plump "v" seen from an angle and an ampersand on its side.
Test Types:RGB, SM
Description:Varies the RGB colors randomly and increases two of the knot values by increments of 0.01 to 0.25 for a quadratic B-spline curve
Attributes Tested: XGL_CURVE_METRIC_VDC and Table 19-1, Column A at the end of this chapter
Operators Tested: xgl_context_new_frame
Output:· gc_nubs_argsCurve looks similar to an ampersand on its side
Test Types:INDEX, SM
Description:Varies the control points, knot vector, parameter range, and the order of curve. Then renders the curve into a gcache. The first loop tests four examples of nonrational B-spline curves while the final loop tests three examples of rational B-spline curves as the various parameters are varied. Same test as nubs_args but using a gcache.
Attributes Tested: XGL_GCACHE XGL_CURVE_UNUSED_BETWEEN_KNOTS and Table 19-1, Column A at the end of this chapter
Operators Tested: xgl_object_create
Output:· gc_nubs_pttypesThe nonrational B-splines look like (1) a v-shaped line, (2) musical note on its side, (3) a portion of a circle, and (4) a tooth with an indented right edge plus a small written "s" on its side. The rational B-spline curves look like (1) a sleigh with a portion of the top missing, (2) a tooth with an indented right edge plus two rounded curves connected at a single point, and (3) a portion of an ellipse.
Test Types:INDEX, SM
Description:XGL_PT_I2D· gc_nubs0Tests that nurbs can be rendered into a gcache using different point types. Gcache version of nubs_pttypes. Tries different point types in the following order:
Test Types:RGB, SM
Description:Varies the RGB control points, knot vector, parameter range, and the order of the curve. Then renders the curve into a gcache. The first loop tests four examples of
nonrational B-spline curves, while the final loop tests three examples of rational B-spline curves, and the various parameters are varied. Same test as nubs_args but using a gcache.
Attributes Tested: XGL_GCACHE
                    XGL_CURVE_UNUSED_BETWEEN_KNOTS
                    and Table 19-1, Column A at the end of this chapter
Operators Tested:   xgl_object_create
                    xgl_gcache_nu_bspline_curve
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             The nonrational B-splines look like (1) a v-shaped line, (2)

a musical note on its side, (3) a portion of a circle, and (4) a tooth with an indented right edge plus a small written "s" on its side. The rational B-spline curves look like (1) a sleigh with a portion of the top missing, (2) a tooth with an indented right edge plus two rounded curves connected at a single point, and (3) a portion of an ellipse.
· gc_nubs2
Test Types:RGB, SM
Description:Tests that RGB nurbs can be rendered into a gcache using different point types. Gcache RGB version of nubs_pttypes. Tries different point types in the following order:
                    XGL_PT_I2D
                    XGL_PT_I2H
                    XGL_PT_F2D
                    XGL_PT_F2H
                    XGL_PT_F3D
                    XGL_PT_F3H
Attributes Tested:  XGL_CURVE_UNUSED_BETWEEN_KNOTS
                    XGL_GCACHE
                    and Table 19-1, Column A at the end of this chapter
Operators Tested:   xgl_object_create
                    xgl_gcache_nu_bspline_curve
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             Curves displayed alternate between a lemon on its side
                    and an ampersand on its side

· nurbs0
Test Types:RGB, SM
Description:Tests that non-trimmed surface nurbs can be rendered with various surface parameters. Point type: Xgl_pt_f3d.
Attributes Tested: XGL_3D_CTX_HLHSR_MODE

Operators Tested: xgl_object_create
Output:· nurbs1A surface with and without edges and isolines.
Test Types:RGB, SM
Description:Tests that trimmed surface nurbs can be rendered with various surface parameters. Point type: Xgl_pt_f3h.
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
XGL_HLHSR_Z_BUFFER
XGL_CTX_NEW_FRAME_ACTION
XGL_CTX_NEW_FRAME_CLEAR
XGL_CTX_NEW_FRAME_HLHSR_ACTION
XGL_CTX_LINE_COLOR
XGL_CTX_EDGE_COLOR
XGL_CTX_SURF_FRONT_COLOR
XGL_CTX_SURF_FRONT_FILL_STYLE
XGL_CTX_SURF_EDGE_FLAG

                    XGL_CTX_NURBS_SURF_APPROX
                    XGL_CTX_NURBS_SURF_APPROV_VAL_{UV}
                    XGL_CTX_NURBS_SURF_PARAM_STYLE
                    XGL_CTX_NURBS_SURF_ISO_CURVE_PLACEMENT
                    XGL_CTX_NURBS_SURF_ISO_CURVE_{UV}_NUM
Operators Tested:   xgl_object_create
                    xgl_nurbs_surface
                    xgl_context_new_frame
Output:             A sphere with and without trimming, with and without
                    edges and isolines.

· gc_nurbs0
Test Types:RGB, SM
Description:Tests that surface nurbs can be rendered into a gcache using different gcache modes. Gcache modes are:
XGL_GCACHE_NURBS_DYNAMIC· nurb_silo
Test Types:RGB, CM
Description:Tests that surface nurbs can draw silhouettes.
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
                    XGL_CTX_NEW_FRAME_ACTION
                    XGL_CTX_NEW_FRAME_CLEAR
                    XGL_CTX_NEW_FRAME_HLHSR_ACTION
                    XGL_CTX_NURBS_SURF_APPROX
                    XGL_CTX_NURBS_SURF_APPROV_VAL_{UV}
                    XGL_CTX_NURBS_SURF_PARAM_STYLE
                    XGL_3D_CTX_SURF_SILHOUETTE_EDGE_FLAG
                    XGL_GCACHE,XGL_GCACHE_NURBS_SURF_MODE
                    XGL_HLHSR_Z_BUFFER
Operators Tested:   xgl_object_create
                    xgl_nurbs_surface
                    xgl_context_new_frame
Output:             Draws a plane with a large bump in it.

· nurb_tiny
Test Types:RGB, CM
Description:Tests when nurbs uses a special case for simple nurbs
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
                    XGL_CTX_NEW_FRAME_ACTION
                    XGL_CTX_NEW_FRAME_CLEAR
                    XGL_CTX_NEW_FRAME_HLHSR_ACTION
                    XGL_CTX_NURBS_SURF_APPROX
                    XGL_CTX_NURBS_SURF_APPROV_VAL_{UV}
                    XGL_CTX_NURBS_SURF_PARAM_STYLE
                    XGL_GCACHE
                    XGL_GCACHE_NURBS_SURF_MODE
                    XGL_HLHSR_Z_BUFFER
Operators Tested:   xgl_object_create
                    xgl_gcache_nurbs_surface
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             Flat plane on bottom and on top a plane with a bump in it

· nurb_sub
Test Types:RGB, CM
Description:Tests that surface nurbs can be subdivided
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
                    XGL_CTX_NEW_FRAME_ACTION
                    XGL_CTX_NEW_FRAME_CLEAR
                    XGL_CTX_NEW_FRAME_HLHSR_ACTION
                    XGL_CTX_NURBS_SURF_APPROX
                    XGL_CTX_NURBS_SURF_APPROV_VAL_{UV}
                    XGL_CTX_NURBS_SURF_PARAM_STYLE
                    XGL_GCACHE
                    XGL_GCACHE_NURBS_SURF_MODE
                    XGL_HLHSR_Z_BUFFER
Operators Tested:   xgl_object_create
                    xgl_gcache_nurbs_surface
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             Plane with bump and tessellation outlines on

· nurb_high
Test Types:RGB, CM
Description:Tests rendering of high order surfaces
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
                    XGL_CTX_NEW_FRAME_ACTION
                    XGL_CTX_NEW_FRAME_CLEAR
                    XGL_CTX_NEW_FRAME_HLHSR_ACTION
                    XGL_CTX_NURBS_SURF_APPROX
                    XGL_CTX_NURBS_SURF_APPROV_VAL_{UV}
                    XGL_CTX_NURBS_SURF_PARAM_STYLE
                    XGL_GCACHE
                    XGL_GCACHE_NURBS_SURF_MODE
                    XGL_HLHSR_Z_BUFFER
Operators Tested:   xgl_object_create
                    xgl_gcache_nurbs_surface
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             Square and error message: Error number di-130: Order is
                    not supported

· nurb_trim1
Test Types:RGB, CM
Description:Tests trimming nurbs
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
                    XGL_CTX_NEW_FRAME_ACTION
                    XGL_CTX_NEW_FRAME_CLEAR
                    XGL_CTX_NEW_FRAME_HLHSR_ACTION
                    XGL_GCACHE
                    XGL_GCACHE_NURBS_SURF_MODE
                    XGL_HLHSR_Z_BUFFER
Operators Tested:   xgl_object_create
                    xgl_gcache_nurbs_surface
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             Square with curve on the bottom edge

· nurb_trim2
Test Types:RGB, CM
Description:Tests trimming nurbs
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
                    XGL_CTX_NEW_FRAME_ACTION
                    XGL_CTX_NEW_FRAME_CLEAR
                    XGL_CTX_NEW_FRAME_HLHSR_ACTION
                    XGL_GCACHE
                    XGL_GCACHE_NURBS_SURF_MODE
                    XGL_HLHSR_Z_BUFFER
Operators Tested:   xgl_object_create
                    xgl_gcache_nurbs_surface
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             Square with curve on the left edge

· nurb_trim3
Test Types:RGB, CM
Description:Tests trimming nurbs
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
                    XGL_CTX_NEW_FRAME_ACTION
                    XGL_CTX_NEW_FRAME_CLEAR
                    XGL_CTX_NEW_FRAME_HLHSR_ACTION
                    XGL_GCACHE
                    XGL_GCACHE_NURBS_SURF_MODE
                    XGL_HLHSR_Z_BUFFER
Operators Tested:   xgl_object_create
                    xgl_gcache_nurbs_surface
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             Curves on top and bottom edge

· nurb_trim4
Test Types:RGB, CM
Description:Tests trimming nurbs
Attributes Tested: XGL_3D_CTX_HLHSR_MODE
                    XGL_CTX_NEW_FRAME_ACTION
                    XGL_CTX_NEW_FRAME_CLEAR
                    XGL_CTX_NEW_FRAME_HLHSR_ACTION
                    XGL_GCACHE
                    XGL_GCACHE_NURBS_SURF_MODE
                    XGL_HLHSR_Z_BUFFER
Operators Tested:   xgl_object_create
                    xgl_gcache_nurbs_surface
                    xgl_context_new_frame
                    xgl_context_display_gcache
Output:             Square with symmetric curve cut in the middle

Table 19-1
Column AColumn B
XGL_3D_CTX_HLHSR_MODEXGL_3D_CTX_HLHSR_MODE
XGL_CTX_LINE_COLORXGL_CTX_LINE_ALT_COLOR
XGL_CTX_NEW_FRAME_ACTIONXGL_CTX_LINE_COLOR
XGL_CTX_NEW_FRAME_CLEARXGL_CTX_LINE_PATTERN
XGL_CTX_NEW_FRAME_HLHSR_
ACTION
XGL_CTX_LINE_STYLE
XGL_CTX_NURBS_CURVE_APPROXXGL_CTX_LINE_WIDTH_SCALE_
FACTOR
XGL_CTX_NURBS_CURVE_APPROX_VALXGL_CTX_MAX_TESSELLATION
XGL_HLHSR_Z_BUFFERXGL_CTX_NEW_FRAME_ACTION
XGL_CTX_NEW_FRAME_CLEAR
XGL_CTX_NEW_FRAME_HLHSR_
ACTION
XGL_CTX_NURBS_CURVE_APPROX
XGL_CTX_NURBS_CURVE_APPROX_VAL
XGL_CURVE_METRIC_WC
XGL_HLHSR_Z_BUFFER
XGL_LINE_ALT_PATTERNED
XGL_LINE_SOLID