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