• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2Name
3
4    SGIX_framezoom
5
6Name Strings
7
8    GL_SGIX_framezoom
9
10Version
11
12    $Date: 1996/03/08 18:16:44 $ $Revision: 1.4 $
13
14Number
15
16    57
17
18Dependencies
19
20    none.
21
22Overview
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
46Issues
47
48    * What happens with zoomed (polygon/line) stippled pattern?
49
50
51New Procedures and Functions
52
53    void FrameZoomSGIX(GLint factor);
54
55New 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
69Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
70
71    None
72
73Additions 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
128Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
129and the Frame Buffer)
130
131    None (?)
132
133Additions to Chapter 5 of the 1.0 Specification (Special Functions)
134
135    None
136
137Additions 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
142Additions to the GLX Specification
143
144    None.
145
146GLX Protocol
147
148    ???
149
150Errors
151
152    INVALID_VALUE is generated if the combination of parameters passed
153    to FrameZoomSGIX are not supported.
154
155New State
156
157    Get Value			Get Command	Type	Initial Value	Attribute
158    ---------			-----------	----	-------------	---------
159    FRAMEZOOM_SGIX		IsEnabled	B	FALSE		??
160
161New 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