15bd8deadSopenharmony_ci
25bd8deadSopenharmony_ciName
35bd8deadSopenharmony_ci
45bd8deadSopenharmony_ci    SGIX_framezoom
55bd8deadSopenharmony_ci
65bd8deadSopenharmony_ciName Strings
75bd8deadSopenharmony_ci
85bd8deadSopenharmony_ci    GL_SGIX_framezoom
95bd8deadSopenharmony_ci
105bd8deadSopenharmony_ciVersion
115bd8deadSopenharmony_ci
125bd8deadSopenharmony_ci    $Date: 1996/03/08 18:16:44 $ $Revision: 1.4 $
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciNumber
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    57
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciDependencies
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    none.
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciOverview
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    This extension provides a additional way to rasterize geometric
255bd8deadSopenharmony_ci    primitives and pixel rectangles.  The techique is to reduce the
265bd8deadSopenharmony_ci    number of pixels rasterized  and (possibly) the number of depth and
275bd8deadSopenharmony_ci    stencil operations performed per primitive.  Each pixel is zoomed
285bd8deadSopenharmony_ci    up and used to render an N x N block of screen pixels.  The
295bd8deadSopenharmony_ci    implementation is free to choose the number of stencil and z pixels
305bd8deadSopenharmony_ci    that will correspond to each N x N block.
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ci    This extension provides an opportunity to the implementation to
335bd8deadSopenharmony_ci    perform expensive raster operations at a reduced resolution,
345bd8deadSopenharmony_ci    increasing performance.  Such operations may include
355bd8deadSopenharmony_ci    texture-mapping, depth & stencil tests, etc.  The hardware should
365bd8deadSopenharmony_ci    be allowed to perform operations that it accelerates at full
375bd8deadSopenharmony_ci    hardware speed.
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    The visual result will be the same as if a scene were rendered into
405bd8deadSopenharmony_ci    a small window, and then that buffer was copied and zoomed up into
415bd8deadSopenharmony_ci    a large window.
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    All OpenGL parameters that effect rasterization size will implicitly
445bd8deadSopenharmony_ci    be multipled by N (this includes point size, line width, etc).
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ciIssues
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    * What happens with zoomed (polygon/line) stippled pattern?
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ciNew Procedures and Functions
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    void FrameZoomSGIX(GLint factor);
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ciNew Tokens
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and
585bd8deadSopenharmony_ci    by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
595bd8deadSopenharmony_ci    GetDoublev:
605bd8deadSopenharmony_ci
615bd8deadSopenharmony_ci	FRAMEZOOM_SGIX
625bd8deadSopenharmony_ci	
635bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
645bd8deadSopenharmony_ci    GetIntegerv, and GetFloatv:
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci	FRAMEZOOM_FACTOR_SGIX
675bd8deadSopenharmony_ci	MAX_FRAMEZOOM_FACTOR_SGIX
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ci    None
725bd8deadSopenharmony_ci
735bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization)
745bd8deadSopenharmony_ci
755bd8deadSopenharmony_ci    If FRAMEZOOM_SGIX is off, the rasterization algorithm is unchanged.
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ci    If FRAMEZOOM_SGIX is on, the rasterization of geometric primitives
785bd8deadSopenharmony_ci    is modified as follows:
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    Rasterization is performed as if the viewport has shrunk down by
815bd8deadSopenharmony_ci    factor of FRAMEZOOM_FACTOR_SGIX.  The viewport itself will not
825bd8deadSopenharmony_ci    change. Then, at an undefined stage after primitive rasterization,
835bd8deadSopenharmony_ci    the resulting fragments will be zoomed up by the same factor.  That
845bd8deadSopenharmony_ci    stage is underfined since some of the later rasterization stages
855bd8deadSopenharmony_ci    (ie. blending, dithering, z buffering, etc.) may be implemented in
865bd8deadSopenharmony_ci    hardware, and hence have to be performed after the zoom.  This
875bd8deadSopenharmony_ci    flexibility is present to allow the implementation to take maximum
885bd8deadSopenharmony_ci    advantage of the hardware.
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci    The zoom process will produce N x N fragments (where N is
915bd8deadSopenharmony_ci    FRAMEZOOM_FACTOR_SGIX) that differ in their x and y coordinates,
925bd8deadSopenharmony_ci    are organized in a square, and try to approximate the features of
935bd8deadSopenharmony_ci    the original rasterization (with subsampling disabled).  The center
945bd8deadSopenharmony_ci    of the subsampled fragment is guaranteed to fall somewhere inside
955bd8deadSopenharmony_ci    the resulting rectangle of fragments.  No additional guarantees are
965bd8deadSopenharmony_ci    made concerning the position of the resulting fragments, except
975bd8deadSopenharmony_ci    that the position of the subsampled fragment will be consistent
985bd8deadSopenharmony_ci    across pixels during the primitive rasterization.
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ci    Since rasterization is performed as if the viewport has shrunk by a
1015bd8deadSopenharmony_ci    factor of FRAMEZOOM_FACTOR_SGIX, all parameters that alter fragment
1025bd8deadSopenharmony_ci    generation in screen coordinates (ie. point size, line width, line
1035bd8deadSopenharmony_ci    stippled, polygon stipple) will look like they now affect a larger
1045bd8deadSopenharmony_ci    area (by FRAMEZOOM_FACTOR_SGIX) in the screen.  Ie. points and
1055bd8deadSopenharmony_ci    lines will render roughly as many pixels as if point size and line
1065bd8deadSopenharmony_ci    width were multiplied by FRAMEZOOM_FACTOR_SGIX, and glDrawPixels
1075bd8deadSopenharmony_ci    will operate as if the pixel zoom specified was multiplied by
1085bd8deadSopenharmony_ci    FRAMEZOOM_FACTOR_SGIX.
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ci    A change in the value of FRAMEZOOM_FACTOR_SGIX, or a change in the
1115bd8deadSopenharmony_ci    state of FRAMEZOOM_SGIX, has the same semantics to the ancillary
1125bd8deadSopenharmony_ci    stencil and z buffers as a resize.  Basically, the contents of
1135bd8deadSopenharmony_ci    these buffers will be undefined till the next clear of that
1145bd8deadSopenharmony_ci    ancillary buffer.
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci    Any specified value of FRAMEZOOM_FACTOR_SGIX will be clampled to
1175bd8deadSopenharmony_ci    the device dependent value of MAX_FRAMEZOOM_FACTOR_SGIX.  The value
1185bd8deadSopenharmony_ci    of MAX_FRAMEZOOM_FACTOR_SGIX may not be constant and may vary
1195bd8deadSopenharmony_ci    during the execution of a GL program.  For example, a certain
1205bd8deadSopenharmony_ci    implementation may not support subsampled rendering when rendering
1215bd8deadSopenharmony_ci    in the front color buffer.  In that case, MAX_FRAMEZOOM_FACTOR_SGIX
1225bd8deadSopenharmony_ci    will be 1 when glDrawBuffer specifies a front buffer, or when the
1235bd8deadSopenharmony_ci    visual on the window is single buffered.  In that case, the value
1245bd8deadSopenharmony_ci    of FRAMEZOOM_FACTOR_SGIX will be clamped to 1, ie. no subsampling
1255bd8deadSopenharmony_ci    performed.
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
1295bd8deadSopenharmony_ciand the Frame Buffer)
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ci    None (?)
1325bd8deadSopenharmony_ci
1335bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions)
1345bd8deadSopenharmony_ci
1355bd8deadSopenharmony_ci    None
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests)
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci    One more state variable, FRAMEZOOM_FACTOR_SGIX is defined by this
1405bd8deadSopenharmony_ci    extension.
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ciAdditions to the GLX Specification
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ci    None.
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ciGLX Protocol
1475bd8deadSopenharmony_ci
1485bd8deadSopenharmony_ci    ???
1495bd8deadSopenharmony_ci
1505bd8deadSopenharmony_ciErrors
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci    INVALID_VALUE is generated if the combination of parameters passed
1535bd8deadSopenharmony_ci    to FrameZoomSGIX are not supported.
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ciNew State
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    Get Value			Get Command	Type	Initial Value	Attribute
1585bd8deadSopenharmony_ci    ---------			-----------	----	-------------	---------
1595bd8deadSopenharmony_ci    FRAMEZOOM_SGIX		IsEnabled	B	FALSE		??
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ciNew Implementation Dependent State
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    Get Value			Get Command	Type	Minimum Value
1645bd8deadSopenharmony_ci    ---------			-----------	----	-------------
1655bd8deadSopenharmony_ci    FRAMEZOOM_FACTOR_SGIX	GetIntegerv	Z+	1
1665bd8deadSopenharmony_ci    MAX_FRAMEZOOM_FACTOR_SGIX	GetIntegerv	Z+	1
1675bd8deadSopenharmony_ci
168