home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 1.iso / toolbox / documents / OpenGL / opengldoc / glspec / framezoom.spec < prev    next >
Encoding:
Text File  |  1996-11-11  |  5.6 KB  |  168 lines

  1.  
  2. Name
  3.  
  4.     SGIX_framezoom
  5.  
  6. Name Strings
  7.  
  8.     GL_SGIX_framezoom
  9.  
  10. Version
  11.  
  12.     $Date: 1996/04/01 23:22:53 $ $Revision: 1.1 $
  13.  
  14. Number
  15.  
  16.     57
  17.  
  18. Dependencies
  19.  
  20.     none.
  21.  
  22. Overview
  23.  
  24.     This extension provides a additional way to rasterize geometric
  25.     primitives and pixel rectangles.  The techique is to reduce the
  26.     number of pixels rasterized  and (possibly) the number of depth and
  27.     stencil operations performed per primitive.  Each pixel is zoomed
  28.     up and used to render an N x N block of screen pixels.  The
  29.     implementation is free to choose the number of stencil and z pixels
  30.     that will correspond to each N x N block.
  31.  
  32.     This extension provides an opportunity to the implementation to
  33.     perform expensive raster operations at a reduced resolution,
  34.     increasing performance.  Such operations may include
  35.     texture-mapping, depth & stencil tests, etc.  The hardware should
  36.     be allowed to perform operations that it accelerates at full
  37.     hardware speed.
  38.  
  39.     The visual result will be the same as if a scene were rendered into
  40.     a small window, and then that buffer was copied and zoomed up into
  41.     a large window.
  42.  
  43.     All OpenGL parameters that effect rasterization size will implicitly
  44.     be multipled by N (this includes point size, line width, etc).
  45.  
  46. Issues
  47.  
  48.     * What happens with zoomed (polygon/line) stippled pattern?
  49.  
  50.  
  51. New Procedures and Functions
  52.  
  53.     void FrameZoomSGIX(GLint factor);
  54.  
  55. New Tokens
  56.  
  57.     Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and
  58.     by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
  59.     GetDoublev:
  60.  
  61.     FRAMEZOOM_SGIX
  62.     
  63.     Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
  64.     GetIntegerv, and GetFloatv:
  65.  
  66.     FRAMEZOOM_FACTOR_SGIX
  67.     MAX_FRAMEZOOM_FACTOR_SGIX
  68.  
  69. Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
  70.  
  71.     None
  72.  
  73. Additions to Chapter 3 of the 1.0 Specification (Rasterization)
  74.  
  75.     If FRAMEZOOM_SGIX is off, the rasterization algorithm is unchanged.
  76.  
  77.     If FRAMEZOOM_SGIX is on, the rasterization of geometric primitives
  78.     is modified as follows:
  79.  
  80.     Rasterization is performed as if the viewport has shrunk down by
  81.     factor of FRAMEZOOM_FACTOR_SGIX.  The viewport itself will not
  82.     change. Then, at an undefined stage after primitive rasterization,
  83.     the resulting fragments will be zoomed up by the same factor.  That
  84.     stage is underfined since some of the later rasterization stages
  85.     (ie. blending, dithering, z buffering, etc.) may be implemented in
  86.     hardware, and hence have to be performed after the zoom.  This
  87.     flexibility is present to allow the implementation to take maximum
  88.     advantage of the hardware.
  89.  
  90.     The zoom process will produce N x N fragments (where N is
  91.     FRAMEZOOM_FACTOR_SGIX) that differ in their x and y coordinates,
  92.     are organized in a square, and try to approximate the features of
  93.     the original rasterization (with subsampling disabled).  The center
  94.     of the subsampled fragment is guaranteed to fall somewhere inside
  95.     the resulting rectangle of fragments.  No additional guarantees are
  96.     made concerning the position of the resulting fragments, except
  97.     that the position of the subsampled fragment will be consistent
  98.     across pixels during the primitive rasterization.
  99.  
  100.     Since rasterization is performed as if the viewport has shrunk by a
  101.     factor of FRAMEZOOM_FACTOR_SGIX, all parameters that alter fragment
  102.     generation in screen coordinates (ie. point size, line width, line
  103.     stippled, polygon stipple) will look like they now affect a larger
  104.     area (by FRAMEZOOM_FACTOR_SGIX) in the screen.  Ie. points and
  105.     lines will render roughly as many pixels as if point size and line
  106.     width were multiplied by FRAMEZOOM_FACTOR_SGIX, and glDrawPixels
  107.     will operate as if the pixel zoom specified was multiplied by
  108.     FRAMEZOOM_FACTOR_SGIX.
  109.  
  110.     A change in the value of FRAMEZOOM_FACTOR_SGIX, or a change in the
  111.     state of FRAMEZOOM_SGIX, has the same semantics to the ancillary
  112.     stencil and z buffers as a resize.  Basically, the contents of
  113.     these buffers will be undefined till the next clear of that
  114.     ancillary buffer.
  115.  
  116.     Any specified value of FRAMEZOOM_FACTOR_SGIX will be clampled to
  117.     the device dependent value of MAX_FRAMEZOOM_FACTOR_SGIX.  The value
  118.     of MAX_FRAMEZOOM_FACTOR_SGIX may not be constant and may vary
  119.     during the execution of a GL program.  For example, a certain
  120.     implementation may not support subsampled rendering when rendering
  121.     in the front color buffer.  In that case, MAX_FRAMEZOOM_FACTOR_SGIX
  122.     will be 1 when glDrawBuffer specifies a front buffer, or when the
  123.     visual on the window is single buffered.  In that case, the value
  124.     of FRAMEZOOM_FACTOR_SGIX will be clamped to 1, ie. no subsampling
  125.     performed.
  126.  
  127.  
  128. Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
  129. and the Frame Buffer)
  130.  
  131.     None (?)
  132.  
  133. Additions to Chapter 5 of the 1.0 Specification (Special Functions)
  134.  
  135.     None
  136.  
  137. Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
  138.  
  139.     One more state variable, FRAMEZOOM_FACTOR_SGIX is defined by this
  140.     extension.
  141.  
  142. Additions to the GLX Specification
  143.  
  144.     None.
  145.  
  146. GLX Protocol
  147.  
  148.     ???
  149.  
  150. Errors
  151.  
  152.     INVALID_VALUE is generated if the combination of parameters passed
  153.     to FrameZoomSGIX are not supported.
  154.  
  155. New State
  156.  
  157.     Get Value            Get Command    Type    Initial Value    Attribute
  158.     ---------            -----------    ----    -------------    ---------
  159.     FRAMEZOOM_SGIX        IsEnabled    B    FALSE        ??
  160.  
  161. New Implementation Dependent State
  162.  
  163.     Get Value            Get Command    Type    Minimum Value
  164.     ---------            -----------    ----    -------------
  165.     FRAMEZOOM_FACTOR_SGIX    GetIntegerv    Z+    1
  166.     MAX_FRAMEZOOM_FACTOR_SGIX    GetIntegerv    Z+    1
  167.  
  168.