home *** CD-ROM | disk | FTP | other *** search
-
- Name
-
- SGIX_framezoom
-
- Name Strings
-
- GL_SGIX_framezoom
-
- Version
-
- $Date: 1996/04/01 23:22:53 $ $Revision: 1.1 $
-
- Number
-
- 57
-
- Dependencies
-
- none.
-
- Overview
-
- This extension provides a additional way to rasterize geometric
- primitives and pixel rectangles. The techique is to reduce the
- number of pixels rasterized and (possibly) the number of depth and
- stencil operations performed per primitive. Each pixel is zoomed
- up and used to render an N x N block of screen pixels. The
- implementation is free to choose the number of stencil and z pixels
- that will correspond to each N x N block.
-
- This extension provides an opportunity to the implementation to
- perform expensive raster operations at a reduced resolution,
- increasing performance. Such operations may include
- texture-mapping, depth & stencil tests, etc. The hardware should
- be allowed to perform operations that it accelerates at full
- hardware speed.
-
- The visual result will be the same as if a scene were rendered into
- a small window, and then that buffer was copied and zoomed up into
- a large window.
-
- All OpenGL parameters that effect rasterization size will implicitly
- be multipled by N (this includes point size, line width, etc).
-
- Issues
-
- * What happens with zoomed (polygon/line) stippled pattern?
-
-
- New Procedures and Functions
-
- void FrameZoomSGIX(GLint factor);
-
- New Tokens
-
- Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and
- by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
- GetDoublev:
-
- FRAMEZOOM_SGIX
-
- Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
- GetIntegerv, and GetFloatv:
-
- FRAMEZOOM_FACTOR_SGIX
- MAX_FRAMEZOOM_FACTOR_SGIX
-
- Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
-
- None
-
- Additions to Chapter 3 of the 1.0 Specification (Rasterization)
-
- If FRAMEZOOM_SGIX is off, the rasterization algorithm is unchanged.
-
- If FRAMEZOOM_SGIX is on, the rasterization of geometric primitives
- is modified as follows:
-
- Rasterization is performed as if the viewport has shrunk down by
- factor of FRAMEZOOM_FACTOR_SGIX. The viewport itself will not
- change. Then, at an undefined stage after primitive rasterization,
- the resulting fragments will be zoomed up by the same factor. That
- stage is underfined since some of the later rasterization stages
- (ie. blending, dithering, z buffering, etc.) may be implemented in
- hardware, and hence have to be performed after the zoom. This
- flexibility is present to allow the implementation to take maximum
- advantage of the hardware.
-
- The zoom process will produce N x N fragments (where N is
- FRAMEZOOM_FACTOR_SGIX) that differ in their x and y coordinates,
- are organized in a square, and try to approximate the features of
- the original rasterization (with subsampling disabled). The center
- of the subsampled fragment is guaranteed to fall somewhere inside
- the resulting rectangle of fragments. No additional guarantees are
- made concerning the position of the resulting fragments, except
- that the position of the subsampled fragment will be consistent
- across pixels during the primitive rasterization.
-
- Since rasterization is performed as if the viewport has shrunk by a
- factor of FRAMEZOOM_FACTOR_SGIX, all parameters that alter fragment
- generation in screen coordinates (ie. point size, line width, line
- stippled, polygon stipple) will look like they now affect a larger
- area (by FRAMEZOOM_FACTOR_SGIX) in the screen. Ie. points and
- lines will render roughly as many pixels as if point size and line
- width were multiplied by FRAMEZOOM_FACTOR_SGIX, and glDrawPixels
- will operate as if the pixel zoom specified was multiplied by
- FRAMEZOOM_FACTOR_SGIX.
-
- A change in the value of FRAMEZOOM_FACTOR_SGIX, or a change in the
- state of FRAMEZOOM_SGIX, has the same semantics to the ancillary
- stencil and z buffers as a resize. Basically, the contents of
- these buffers will be undefined till the next clear of that
- ancillary buffer.
-
- Any specified value of FRAMEZOOM_FACTOR_SGIX will be clampled to
- the device dependent value of MAX_FRAMEZOOM_FACTOR_SGIX. The value
- of MAX_FRAMEZOOM_FACTOR_SGIX may not be constant and may vary
- during the execution of a GL program. For example, a certain
- implementation may not support subsampled rendering when rendering
- in the front color buffer. In that case, MAX_FRAMEZOOM_FACTOR_SGIX
- will be 1 when glDrawBuffer specifies a front buffer, or when the
- visual on the window is single buffered. In that case, the value
- of FRAMEZOOM_FACTOR_SGIX will be clamped to 1, ie. no subsampling
- performed.
-
-
- Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
- and the Frame Buffer)
-
- None (?)
-
- Additions to Chapter 5 of the 1.0 Specification (Special Functions)
-
- None
-
- Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
-
- One more state variable, FRAMEZOOM_FACTOR_SGIX is defined by this
- extension.
-
- Additions to the GLX Specification
-
- None.
-
- GLX Protocol
-
- ???
-
- Errors
-
- INVALID_VALUE is generated if the combination of parameters passed
- to FrameZoomSGIX are not supported.
-
- New State
-
- Get Value Get Command Type Initial Value Attribute
- --------- ----------- ---- ------------- ---------
- FRAMEZOOM_SGIX IsEnabled B FALSE ??
-
- New Implementation Dependent State
-
- Get Value Get Command Type Minimum Value
- --------- ----------- ---- -------------
- FRAMEZOOM_FACTOR_SGIX GetIntegerv Z+ 1
- MAX_FRAMEZOOM_FACTOR_SGIX GetIntegerv Z+ 1
-
-