home *** CD-ROM | disk | FTP | other *** search
/ IRIS Development Option 6.2 / IRIS_Development_Option_6.2_814-0478-001.iso / dist / gl_dev.idb / usr / relnotes / gl_dev / ch6.z / ch6
Text File  |  1996-03-14  |  36KB  |  859 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        6.  _O_p_e_n_G_L
  9.  
  10.        OpenGL is supported on all graphics adaptors. Here is the
  11.        complete list:
  12.  
  13.          Indy - XL 8/24 bits
  14.          Indigo - Starter, XS, XS24, XZ, Elan
  15.          IndigoII - XL, XZ, Extreme, Solid Impact, Maximum Impact,
  16.                     High Impact
  17.          Crimson - Starter, XS, XS24, Elan, Extreme, VGX, VGXT,
  18.                    RealityEngine
  19.          Onyx - InfiniteReality, RealityEngine2, RealityEngine, VTX
  20.  
  21.        These implementations pass Level 0 of the conformance tests
  22.        (i.e., the "mustpass" test suite).  Also, all the adaptors
  23.        except VGX, and VGXT pass most of the balance of the
  24.        conformance tests. The VGX, and VGXT use a rendering
  25.        pipeline that is more like IrisGL and therefore fail most of
  26.        the lighting conformance tests in addition to other tests.
  27.        (Please see the conformance reports for details.)
  28.  
  29.        6.1  _D_o_c_u_m_e_n_t_a_t_i_o_n
  30.  
  31.        The following documentation is available for OpenGL:
  32.  
  33.           +o The _O_p_e_n_G_L _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e (Addison-Wesley, 1993) is
  34.             a comprehensive guide to programming with OpenGL.
  35.  
  36.           +o The _O_p_e_n_G_L _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l (Addison-Wesley, 1992)
  37.             contains an overview of OpenGL and man pages for all
  38.             OpenGL, GLX and GLU functions.
  39.  
  40.           +o _O_p_e_n_G_L _o_n _S_i_l_i_c_o_n _G_r_a_p_h_i_c_s _S_y_s_t_e_m_s provides information
  41.             that is essential for writing OpenGL applications in
  42.             the X11 and IRIS IM environments, describes major SGI
  43.             extensions to OpenGL, and gives advice for tuning
  44.             OpenGL application performance.
  45.  
  46.           +o _T_h_e _O_p_e_n_G_L _P_o_r_t_i_n_g _G_u_i_d_e describes how to port programs
  47.             that were written for IRIS GL.  (Some of this
  48.             information has been superseded by the material in
  49.             _O_p_e_n_G_L _o_n _S_i_l_i_c_o_n _G_r_a_p_h_i_c_s _S_y_s_t_e_m_s.)
  50.  
  51.           +o The _I_R_I_S _P_r_o_g_r_a_m_m_i_n_g _N_o_t_e_s include documentation for
  52.             X11, GL/GLX, Font Manager and mixed model programming
  53.             in IRIS GL.
  54.  
  55.        The IRIS Development Option documentation includes online
  56.        copies of _T_h_e _O_p_e_n_G_L _P_o_r_t_i_n_g _G_u_i_d_e, _O_p_e_n_G_L _o_n _S_i_l_i_c_o_n
  57.        _G_r_a_p_h_i_c_s _S_y_s_t_e_m_s, the _I_R_I_S _P_r_o_g_r_a_m_m_i_n_g _N_o_t_e_s, the _O_p_e_n_G_L
  58.        _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e, the _O_p_e_n_G_L _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l and reference
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.        pages (commonly known as ``man pages'') for all OpenGL, GLX
  75.        and GLU functions.  It includes a hardcopy of the _O_p_e_n_G_L
  76.        _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e.  You may also order a hardcopy of the
  77.        porting guide (part number M4-OGLPort-5.1) and the _O_p_e_n_G_L
  78.        _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l (part number M4-OGLMAN-1.0).
  79.  
  80.        The reference pages for OpenGL commands have been updated
  81.        with the latest information on machine-dependencies for each
  82.        of the supported graphics adaptors.  This includes
  83.        performance tuning hints as well as known bugs and
  84.        functionality subsetting warnings.
  85.  
  86.        If you're porting from IRIS GL to OpenGL, the best approach
  87.        is to convert your program to a mixed-model program first
  88.        (see the _I_R_I_S _P_r_o_g_r_a_m_m_i_n_g _N_o_t_e_s) and then consult _O_p_e_n_G_L _o_n
  89.        _S_i_l_i_c_o_n _G_r_a_p_h_i_c_s _S_y_s_t_e_m_s followed by _T_h_e _O_p_e_n_G_L _P_o_r_t_i_n_g
  90.        _G_u_i_d_e for more information.
  91.  
  92.        6.2  _E_x_t_e_n_s_i_o_n_s
  93.  
  94.        The following OpenGL extensions are available in IRIX 6.2.
  95.        For more information, please consult the _g_l_i_n_t_r_o reference
  96.        page.
  97.  
  98.           +o _E_X_T__a_b_g_r extends the list of host-memory color formats.
  99.             Specifically, it provides a reverse-order alternative
  100.             to image format RGBA. The ABGR component order matches
  101.             the cpack Iris GL format on big-endian machines.
  102.  
  103.           +o _E_X_T__b_l_e_n_d__c_o_l_o_r allows a constant to be used as a
  104.             factor in the blending equation.  A typical use is to
  105.             blend two RGB images.  Without the constant blend
  106.             factor, one image must have an alpha channel with each
  107.             pixel set to the desired blend factor.
  108.  
  109.           +o _E_X_T__b_l_e_n_d__l_o_g_i_c__o_p defines an additional blending
  110.             equation for _g_l_B_l_e_n_d_E_q_u_a_t_i_o_n_E_X_T.  This equation is a
  111.             simple logical combination of the source and
  112.             destination colors.
  113.  
  114.           +o _E_X_T__b_l_e_n_d__m_i_n_m_a_x allows the blend equation to be
  115.             changed using _g_l_B_l_e_n_d_E_q_u_a_t_i_o_n_E_X_T and introduces two new
  116.             blend equations, one to produce the minimum color
  117.             components of the source and destination colors and one
  118.             to produce the maximum.
  119.  
  120.           +o _E_X_T__b_l_e_n_d__s_u_b_t_r_a_c_t defines two additional blending
  121.             equations for use with _g_l_B_l_e_n_d_E_q_u_a_t_i_o_n_E_X_T.  These new
  122.             equations are similar to the default blending equation,
  123.             but produce the difference of its terms, rather than
  124.             the sum.  Image differences are useful in many image
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.             processing applications.
  141.  
  142.           +o _S_G_I_X__c_l_i_p_m_a_p introduces new filtering and memory
  143.             management techniques for handling extraordinarily
  144.             large textures.  Clipmaps provide many of the features
  145.             of mipmaps, while using a small fraction of the texture
  146.             memory required for mipmaps of equivalent size.  They
  147.             are especially useful for rendering terrain and roaming
  148.             over large images.  Clipmaps are supported on
  149.             InfiniteReality systems.
  150.  
  151.           +o _S_G_I__c_o_l_o_r__m_a_t_r_i_x adds a 4x4 matrix stack and matrix
  152.             multiplication to the pixel transfer path.  The color
  153.             matrix operates on RGBA pixel components.  It can be
  154.             used to reorder or duplicate color components, and to
  155.             implement simple color-space conversions.
  156.  
  157.           +o _S_G_I__c_o_l_o_r__t_a_b_l_e defines a new RGBA-format color lookup
  158.             table mechanism, and several new lookup tables in the
  159.             OpenGL pixel path.  The new lookup tables are treated
  160.             as one-dimensional images with internal formats, like
  161.             texture images and convolution filter images.  This
  162.             allows the tables to operate on a subset of the
  163.             components of passing pixels.  (For example, a table
  164.             with internal format GL_ALPHA modifies only the A
  165.             component of each passing pixel, leaving the R, G, and
  166.             B components untouched.)  A small subset of this
  167.             extension is supported on RealityEngine,
  168.             RealityEngine2, and VTX systems; because of this, the
  169.             extension is not listed in the extensions string
  170.             returned by _g_l_G_e_t_S_t_r_i_n_g.  The full extension is
  171.             supported on all other systems.
  172.  
  173.           +o _E_X_T__c_o_n_v_o_l_u_t_i_o_n adds 1- or 2-dimensional convolution
  174.             operations to the pixel transfer process.  Pixel
  175.             drawing, reading, and copying, as well as texture image
  176.             definition, are candidates for convolution.  The
  177.             convolution kernels are themselves treated as 1- and
  178.             2-dimensional images, which can be loaded from
  179.             application memory or from the framebuffer.  A subset
  180.             of this extension is supported on RealityEngine,
  181.             RealityEngine2, and VTX systems; the full extension is
  182.             supported on all other systems.
  183.  
  184.           +o _E_X_T__c_o_p_y__t_e_x_t_u_r_e provides the ability to copy pixels
  185.             directly from the framebuffer into texture memory.  At
  186.             present only a small subset of this extension has been
  187.             implemented on RealityEngine, RealityEngine2, and VTX
  188.             systems, so the extension name is not listed in the
  189.             extensions string returned by _g_l_G_e_t_S_t_r_i_n_g.  It is fully
  190.             supported on all other systems.
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.           +o _S_G_I_S__d_e_t_a_i_l__t_e_x_t_u_r_e introduces texture magnification
  207.             filters that blend between the level 0 image and a
  208.             separately defined "detail" image. This detail blending
  209.             can be enabled for all color channels, for the alpha
  210.             channel only, or for the red, green, and blue channels
  211.             only. It is available only for 2D textures.  Supported
  212.             on RealityEngine, RealityEngine2, and VTX systems and
  213.             on InfiniteReality systems.
  214.  
  215.           +o _S_G_I_S__f_o_g__f_u_n_c Standard OpenGL defines three fog modes:
  216.             GL_LINEAR, GL_EXP (exponential), and GL_EXP2
  217.             (exponential squared).  Visual simulation systems can
  218.             benefit from more sophisticated atmospheric effects.
  219.             This extension provides the ability to define a custom
  220.             fog blending function by specifying a set of control
  221.             points that will be interpolated by the function.
  222.             Supported on InfiniteReality systems.
  223.  
  224.           +o _S_G_I_X__f_o_g__o_f_f_s_e_t In highly-fogged environments, emissive
  225.             objects (like simulated automobile headlights or runway
  226.             landing lights) can appear unrealistically dim.  This
  227.             extension brightens fogged objects by offsetting the Z
  228.             value used in fog computations.  Supported on
  229.             InfiniteReality systems.
  230.  
  231.           +o _E_X_T__h_i_s_t_o_g_r_a_m defines pixel operations that count
  232.             occurrences of specific color component values
  233.             (histogram) and track the minimum and maximum color
  234.             component values (minmax).  An optional mode allows
  235.             pixel data to be discarded after the histogram and/or
  236.             minmax operations are completed.  Otherwise the pixel
  237.             data continue on to the next operation unaffected.
  238.  
  239.           +o _S_G_I_X__i_n_t_e_r_l_a_c_e modifies the behavior of _g_l_D_r_a_w_P_i_x_e_l_s,
  240.             _g_l_C_o_p_y_P_i_x_e_l_s, _g_l_T_e_x_I_m_a_g_e_2_D, _g_l_T_e_x_S_u_b_I_m_a_g_e_2_D_E_X_T,
  241.             _g_l_C_o_p_y_T_e_x_I_m_a_g_e_2_D_E_X_T and _g_l_C_o_p_y_T_e_x_S_u_b_I_m_a_g_e_2_D_E_X_T, such
  242.             that when GL_INTERLACE_SGIX is enabled the source image
  243.             is considered to be a field of an "interlaced" frame.
  244.             This is particularly useful for assembling consecutive
  245.             interlaced video format fields to into a complete frame
  246.             in either the framebuffer or in texture memory.
  247.             Supported on RealityEngine, RealityEngine2, and VTX
  248.             systems and on InfiniteReality systems.
  249.  
  250.           +o _S_G_I_S__m_u_l_t_i_s_a_m_p_l_e provides a mechanism to antialias all
  251.             primitives.  The technique is to sample all primitives
  252.             multiple times at different locations within each pixel
  253.             (rather than just the pixel center). The color sample
  254.             values are resolved to a single, displayable color each
  255.             time a pixel is updated, so the antialiasing appears to
  256.             be automatic at the application level.  Supported on
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.             RealityEngine, RealityEngine2, and VTX systems and on
  273.             InfiniteReality systems.
  274.  
  275.           +o _E_X_T__p_a_c_k_e_d__p_i_x_e_l_s provides support for packed pixels in
  276.             host memory.  A packed pixel is represented entirely by
  277.             one unsigned byte, one unsigned short, or one unsigned
  278.             integer. The fields with the packed pixel are not
  279.             proper machine types, but the pixel as a whole is. Thus
  280.             the pixel storage modes, and their unpacking
  281.             counterparts, all work correctly with packed pixels.
  282.             This extension is not supported on RealityEngine,
  283.             RealityEngine2, and VTX systems.
  284.  
  285.           +o _E_X_T__p_o_l_y_g_o_n__o_f_f_s_e_t allows depth values of fragments to
  286.             be displaced so that lines (or points) and polygons
  287.             that lie in the same plane can be rendered without
  288.             interaction -- the lines are rendered either completely
  289.             in front of or behind the polygons (depending on the
  290.             sign of the offset factor).  It also allows multiple
  291.             coplanar polygons to be rendered without interaction,
  292.             if different offset factors are used for each polygon.
  293.  
  294.           +o _S_G_I_X__p_o_l_y_n_o_m_i_a_l__f_f_d alters vertex coordinates, texture
  295.             coordinates, and normals according to user-specified
  296.             trivariate polynomials.  The resulting deformations are
  297.             useful in modelling and character animation.  This
  298.             extension is supported on InfiniteReality systems.
  299.  
  300.           +o _S_G_I_X__r_e_f_e_r_e_n_c_e__p_l_a_n_e allows a group of coplanar
  301.             primitives to be rendered without depth-buffering
  302.             artifacts.  This is accomplished by generating the
  303.             depth values for all the primitives from a single
  304.             ``reference plane'' rather than from the primitives
  305.             themselves.  This ensures that all the primitives in
  306.             the group have exactly the same depth value at any
  307.             given sample point, no matter what imprecision may
  308.             exist in the original specifications of the primitives
  309.             or in the GL's coordinate transformation process.
  310.             _S_G_I_X__r_e_f_e_r_e_n_c_e__p_l_a_n_e is useful for generating hidden-
  311.             line drawings, for applying decals to polygons, and for
  312.             multipass rendering techniques.  Supported on
  313.             InfiniteReality systems.
  314.  
  315.           +o _S_G_I_X__s_h_a_d_o_w provides support for rendering shadows
  316.             using shadow maps.  First the application renders the
  317.             scene from the point of view of the light source, and
  318.             copies the resulting depth buffer to a texture with
  319.             internal format GL_DEPTH_COMPONENT.  Next the
  320.             application renders the scene from the normal
  321.             viewpoint.  Then the application enables the texture
  322.             parameter GL_TEXTURE_COMPARE_SGIX, sets the texture
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.             comparison operator and texture matrix appropriately,
  339.             and re-renders the scene with 2D texturing enabled.
  340.             During this final rendering pass, the depth value
  341.             generated by iterating the _r texture coordinate is
  342.             compared with the shadow map stored in texture memory,
  343.             and the results of the comparison indicate whether the
  344.             pixel being textured is in shadow.  The filtered result
  345.             of the shadow comparisons can be blended with the pixel
  346.             to darken it.  Supported on InfiniteReality systems.
  347.  
  348.           +o _S_G_I_X__s_h_a_d_o_w__a_m_b_i_e_n_t controls the filtered texture value
  349.             generated in shadowed regions (see _S_G_I_X__s_h_a_d_o_w).  In
  350.             effect, this changes the ambient lighting in shadows.
  351.             Supported on InfiniteReality systems.
  352.  
  353.           +o _S_G_I_S__s_h_a_r_p_e_n__t_e_x_t_u_r_e introduces texture magnification
  354.             filters that sharpen the resulting image by
  355.             extrapolating from the level 1 image to the level 0
  356.             image.  Sharpening can be enabled for all color
  357.             channels, for the alpha channel only, or for the red,
  358.             green, and blue channels only.  Supported on
  359.             RealityEngine, RealityEngine2, and VTX systems and on
  360.             InfiniteReality systems.
  361.  
  362.           +o _E_X_T__s_u_b_t_e_x_t_u_r_e allows a contiguous portion of an
  363.             already-existing texture image to be redefined without
  364.             affecting the remaining portion of the image or any of
  365.             the other state that describes the texture. There are
  366.             three new calls: _g_l_T_e_x_S_u_b_I_m_a_g_e_1_D_E_X_T,
  367.             _g_l_T_e_x_S_u_b_I_m_a_g_e_2_D_E_X_T, and _g_l_T_e_x_S_u_b_I_m_a_g_e_3_D_E_X_T.  A subset
  368.             of this extension is available on RealityEngine,
  369.             RealityEngine2, and VTX systems, and the full extension
  370.             is available on all other systems.
  371.  
  372.           +o _E_X_T__t_e_x_t_u_r_e provides support for a variety of
  373.             resolutions of color components in texture images. That
  374.             is, instead of treating a retained image as having 1,
  375.             2, 3, or 4 components, it is treated as though it had a
  376.             specific format, such as GL_LUMINANCE_ALPHA, or just
  377.             GL_ALPHA.  This extension also defines a robust method
  378.             for applications to determine what combinations of
  379.             texture dimensions and resolutions are supported by an
  380.             implementation and it introduces a new texture
  381.             environment: GL_REPLACE_EXT.
  382.  
  383.           +o _E_X_T__t_e_x_t_u_r_e_3_D supports 3-dimensional texture mapping.
  384.             It also defines the in-memory formats for 3D images,
  385.             and adds pixel storage modes to support them.
  386.  
  387.           +o _S_G_I_X__t_e_x_t_u_r_e__a_d_d__e_n_v defines a new texture environment
  388.             function which scales the texture value by the constant
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.             texture color and then adds a bias color.  Supported
  405.             only on InfiniteReality systems.
  406.  
  407.           +o _S_G_I__t_e_x_t_u_r_e__c_o_l_o_r__t_a_b_l_e adds a color lookup table to
  408.             the texture mapping process.
  409.  
  410.           +o _S_G_I_S__t_e_x_t_u_r_e__e_d_g_e__c_l_a_m_p The GL normally clamps texture
  411.             coordinates to the range [0,1].  This can cause the
  412.             texture sampling filter to straddle the edge of the
  413.             texture image, taking half its sample values from
  414.             within the texture image, and the other half from the
  415.             texture border.  Sometimes this is undesirable.
  416.             _S_G_I_S__t_e_x_t_u_r_e__e_d_g_e__c_l_a_m_p defines a new texture clamping
  417.             method that ensures all sample values fall within the
  418.             texture image.
  419.  
  420.           +o _S_G_I_S__t_e_x_t_u_r_e__f_i_l_t_e_r_4 allows 1D and 2D textures to be
  421.             filtered using an application-defined symmetric and
  422.             separable filter with four samples per dimension.  In
  423.             the most common 2D case, the filter is bicubic.  This
  424.             filtering can yield better-quality images than
  425.             mipmapping, and is often used in image processing
  426.             applications.  Supported on InfiniteReality systems.
  427.  
  428.           +o _S_G_I_S__t_e_x_t_u_r_e__l_o_d provides mechanisms that reduce the
  429.             number of mipmap levels required for mipmapped
  430.             texturing.  This allows a large texture to be loaded
  431.             and used initially at low resolution, and to increase
  432.             the resolution gradually as time passes or as more
  433.             mipmap levels become available.  Supported on
  434.             InfiniteReality systems.
  435.  
  436.           +o _E_X_T__t_e_x_t_u_r_e__o_b_j_e_c_t supports named texture objects whose
  437.             contents and parameters may be changed after they are
  438.             defined.  (Contrast this with textures in display
  439.             lists, which cannot be modified after the display lists
  440.             are created.)  For machines with special texture
  441.             memories, _E_X_T__t_e_x_t_u_r_e__o_b_j_e_c_t also provides simple
  442.             texture memory management.
  443.  
  444.           +o _S_G_I_X__t_e_x_t_u_r_e__s_c_a_l_e__b_i_a_s adds scale, bias, and clamp
  445.             operations to the texture pipeline.  These operations
  446.             are applied to the filtered result of a texture lookup,
  447.             before that result is used in the texture environment
  448.             equations and before the texture color lookup table of
  449.             _S_G_I__t_e_x_t_u_r_e__c_o_l_o_r__t_a_b_l_e.
  450.  
  451.           +o _E_X_T__v_e_r_t_e_x__a_r_r_a_y adds the ability to specify multiple
  452.             geometric primitives with very few subroutine calls.
  453.             Instead of calling an OpenGL procedure to pass each
  454.             individual vertex, normal, or color, separate arrays of
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.             vertexes, normals, and colors are prespecified, and are
  471.             used to define a sequence of primitives (all of the
  472.             same type) when a single call is made to
  473.             _g_l_D_r_a_w_A_r_r_a_y_s_E_X_T. A stride mechanism is provided so that
  474.             an application can choose to keep all vertex data
  475.             staggered in a single array, or sparsely in separate
  476.             arrays, but single-array storage generally will provide
  477.             better performance.  This extension also supports the
  478.             rendering of individual array elements, each specified
  479.             as an index into the enabled arrays.
  480.  
  481.        The following GLX extensions are available in 6.2.  For
  482.        detailed information, please consult the _g_l_x_i_n_t_r_o reference
  483.        page.
  484.  
  485.           +o _S_G_I_X__f_b_c_o_n_f_i_g introduces a new way to describe the
  486.             capabilities of a GLX drawable (i.e., to describe the
  487.             depth of color buffer components and the type and size
  488.             of ancillary buffers), removes the "similarity"
  489.             requirement when making a context current to a
  490.             drawable, and supports RGBA rendering to one- and two-
  491.             component Windows and GLX Pixmaps.
  492.  
  493.           +o _E_X_T__i_m_p_o_r_t__c_o_n_t_e_x_t allows multiple X clients to share
  494.             an indirect rendering context. Also, two convenience
  495.             routines are added: one to get the display for the
  496.             current context and one to retrieve the attributes that
  497.             a context was created with.
  498.  
  499.           +o _S_G_I__m_a_k_e__c_u_r_r_e_n_t__r_e_a_d allows OpenGL pixel operations to
  500.             read pixel data from the buffers of one drawable and
  501.             draw into the buffers of another.  For example, pixels
  502.             can be copied from one window into another, or from a
  503.             GLXPbuffer into a window.
  504.  
  505.           +o _S_G_I_S__m_u_l_t_i_s_a_m_p_l_e provides a mechanism to antialias all
  506.             primitives.  In order to support multisampling both GLX
  507.             and OpenGL had to be extended. The GLX portion of the
  508.             extension includes new visual attributes which can be
  509.             specified when calling _g_l_X_C_h_o_o_s_e_V_i_s_u_a_l and
  510.             _g_l_X_G_e_t_C_o_n_f_i_g.  This extension is supported on
  511.             RealityEngine, RealityEngine2, and VTX systems, and on
  512.             InfiniteReality systems.
  513.  
  514.           +o _S_G_I_X__p_b_u_f_f_e_r defines GLX pixel buffers, which are
  515.             additional non-visible rendering buffers for an OpenGL
  516.             renderer.  GLX pixel buffers are typically allocated in
  517.             non-visible frame buffer memory.  They are intended to
  518.             be "static" resources, in that a program will typically
  519.             allocate them only once, rather than as a part of its
  520.             rendering loop. Also the frame buffer resources that
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.             are associated with a GLX pixel buffer are static, and
  537.             are deallocated only when the GLXPbuffer is destroyed,
  538.             or, in the case of a _u_n_p_r_e_s_e_r_v_e_d GLX pixel buffer, as a
  539.             result of X server activity that changes its frame
  540.             buffer requirements.
  541.  
  542.           +o _S_G_I__s_w_a_p__c_o_n_t_r_o_l provides new parameters that modify
  543.             the semantics of _g_l_S_w_a_p_B_u_f_f_e_r_s. With this extension an
  544.             application can specify a minimum periodicity for color
  545.             buffer swaps, measured in display retrace periods.
  546.  
  547.           +o _S_G_I_X__v_i_d_e_o__r_e_s_i_z_e allows the frame buffer to be resized
  548.             to the output resolution of the video channel when
  549.             _S_w_a_p_B_u_f_f_e_r_s is called for the window that is bound to
  550.             the video channel.  This extension is supported only on
  551.             InfiniteReality systems.
  552.  
  553.           +o _S_G_I_X__v_i_d_e_o__s_o_u_r_c_e allows pixel data to be sourced from
  554.             a video input stream.  It defines a new type of
  555.             drawable, GLXVideoSourceSGIX, that represents the drain
  556.             node of a Video Library (VL) path.  A
  557.             GLXVideoSourceSGIX may be passed as a parameter to
  558.             _g_l_X_M_a_k_e_C_u_r_r_e_n_t_R_e_a_d_S_G_I to indicate that pixel data
  559.             should be read from the specified video source instead
  560.             of from the framebuffer.
  561.  
  562.           +o _S_G_I__v_i_d_e_o__s_y_n_c provides a means for synchronization
  563.             with the video frame rate of a monitor - or, in the
  564.             case of an interlaced monitor, with the field rate of
  565.             the monitor.
  566.  
  567.           +o _E_X_T__v_i_s_u_a_l__i_n_f_o allows the user to request a particular
  568.             X visual type to be associated with a GLX visual, and
  569.             allows the user to query the X visual type underlying a
  570.             GLX visual. In addition, this extension provides a
  571.             means to request a visual with a transparent pixel and
  572.             to query whether a visual supports a transparent pixel
  573.             value and the value of the transparent pixel.
  574.  
  575.           +o _E_X_T__v_i_s_u_a_l__r_a_t_i_n_g allows servers to identify a
  576.             particular GLX visual as undesirable. This allows
  577.             servers to export visuals with improved features or
  578.             image quality, but lower performance or greater system
  579.             burden, without having to have these visuals selected
  580.             preferentially.
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.        6.3  _N_e_w__F_e_a_t_u_r_e_s__i_n__6_._2
  603.  
  604.        In IRIX 5.3, an OpenGL debugging utility, ogldebug, was
  605.        added.  ogldebug is a development tool that allows you to
  606.        examine OpenGL calls generated by an application. See the
  607.        _o_g_l_d_e_b_u_g reference page for details.
  608.  
  609.        Also, in IRIX 6.2, two new OpenGL utility libraries were
  610.        added: GLC is a subroutine library that provides OpenGL
  611.        programs with character rendering services (consult the
  612.        _g_l_c_i_n_t_r_o reference page for details), GLS is a facility for
  613.        encoding and decoding streams of 8-bit bytes that represent
  614.        sequences of OpenGL commands (consult the _g_l_s_i_n_t_r_o reference
  615.        page for details).
  616.  
  617.        6.4  _C_h_a_n_g_e_s_,__A_d_d_i_t_i_o_n_s__a_n_d__K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__6_._2
  618.  
  619.        IRIX 6.2 includes the OpenGL functionality previously
  620.        provided by IRIX 5.3 with patches 154 and 918, plus support
  621.        for more extensions on all platforms and support for IMPACT
  622.        and InfiniteReality.
  623.  
  624.        Auxbuffers, which were removed in IRIX 5.3, are once again
  625.        supported on RealityEngine, RealityEngine2, VTX, and
  626.        InfiniteReality systems.
  627.  
  628.        Starting in 6.2, all known problems and machine-dependencies
  629.        for OpenGL are documented in the OpenGL man pages.  This
  630.        provides an integrated source of information for development
  631.        and debugging.
  632.  
  633.        6.5  _C_h_a_n_g_e_s_,__A_d_d_i_t_i_o_n_s__a_n_d__K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__5_._3__a_n_d__6_._1
  634.  
  635.        Aux buffers are no longer supported on any platform.  In
  636.        Irix 5.2, RealityEngine, Extreme, and Elan systems had
  637.        OpenGL visuals that supported aux buffers. However, since
  638.        rendering to aux buffers could cause serious data
  639.        corruption, and the problem could not be repaired in time
  640.        for release, support for aux buffers was removed in 5.3 and
  641.        6.1.
  642.  
  643.        The following problems exist in 5.3, 6.1, and earlier
  644.        releases:
  645.  
  646.           +o Textures loaded using glPixelMap might be corrupted
  647.             when enough textures are loaded to cause kernel
  648.             management of texture memory.  Corruption should occur
  649.             only if the glPixelMap has changed or been disabled
  650.             since the original load.
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.           +o Line stippling for antialiased lines is not quite
  669.             correct on Onyx systems.
  670.  
  671.           +o Different OpenGL processes which render to the same
  672.             window using direct rendering will not share the
  673.             software ancillary buffers on that window.
  674.  
  675.           +o X and OpenGL do not coordinate swapping on double-
  676.             buffered windows properly.
  677.  
  678.           +o The GLX specification allows rendering contexts to be
  679.             shared within an address space. This implies that an
  680.             indirect rendering context may be used by different
  681.             clients connected to the same server, and that a direct
  682.             rendering context may be used by different threads
  683.             sharing the address space of a single client. However,
  684.             neither of these are currently supported, and
  685.             attempting either can result in a graphics or system
  686.             hang. If an application requires more than one
  687.             rendering thread then it must create a separate context
  688.             for each thread.
  689.  
  690.           +o If an OpenGL program does a server grab using its X
  691.             connection, then for the duration of the grab it should
  692.             not render OpenGL into any window that the client doing
  693.             the grab did not create.  Otherwise a deadlock occurs.
  694.             The client is still able to do X rendering.  This holds
  695.             for both local and remote rendering.
  696.  
  697.           +o glXCopyContext does not work correctly if the source
  698.             context is not the current context or if the
  699.             destination context has never been made current.
  700.  
  701.           +o On XS/XZ/Elan/Extreme, Indy, XL, Indigo Entry, PI and
  702.             VGX it is not possible to create a texture map with
  703.             borders that is MAX_TEXTURE_SIZE X MAX_TEXTURE_SIZE
  704.             (i.e., 1024 X 1024).  Due to a bug, the maximum texture
  705.             size is 512 X 512 if the texture has borders.  (The
  706.             width (and height) parameters for glTexImage1D (and
  707.             glTexImage2D) would be set to 512 + border).
  708.  
  709.           +o For RealityEngine systems, the _b_o_r_d_e_r texels for the
  710.             glTexImage1D and glTexImage2D calls are ignored.
  711.  
  712.           +o On Personal Iris systems, when calling glXChooseVisual
  713.             to get an OpenGL-capable visual, add the attribute
  714.             "GLX_RED_SIZE 1" to attribList--otherwise you may get
  715.             back an invalid visual. Due to this bug, it is only
  716.             possible to select deep visuals on Personal Iris
  717.             systems.
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.           +o No locking of display list structures is done on behalf
  735.             of indirect OpenGL contexts that share display list
  736.             spaces.  Applications that use such contexts should use
  737.             their own mechanisms to ensure mutual exclusion when
  738.             defining or destroying display lists.
  739.  
  740.           +o When running OpenGL applications that use indirect
  741.             rendering, it is normal for more than one instance of
  742.             _X_s_g_i, the SGI X server, to show up under _p_s.  They
  743.             represent multiple threads of the X server, used to
  744.             implement indirect rendering.
  745.  
  746.           +o You may notice some discrepancies between the OpenGL
  747.             Reference Manual which is available through InSight and
  748.             the man pages you see when you type "man glXxx" in a
  749.             shell window. If so, you should believe what you see in
  750.             the shell window.
  751.  
  752.        6.6  _C_h_a_n_g_e_s_,__A_d_d_i_t_i_o_n_s__a_n_d__K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__5_._2
  753.  
  754.        The following problems are known to exist in 5.2 and earlier
  755.        releases:
  756.  
  757.           +o During direct rendering, software buffers that are
  758.             associated with the window are not freed when the
  759.             window is destroyed, but rather when the display
  760.             connection is closed. (The machine type determines
  761.             which buffers are implemented in software; on Indigo
  762.             Starter and Indy, for example, depth buffer, stencil
  763.             buffer, and accum buffer are all software buffers.)
  764.  
  765.             In 5.2, a workaround was included to force the buffers
  766.             to be cleaned up, at the cost of an extra X connection.
  767.             To enable this feature, do
  768.  
  769.                     setenv GL_CHECK_WINDOW_DESTROY y
  770.  
  771.             before the first glXCreateContext. It will check for
  772.             window destroy events and clean up memory the next time
  773.             any rendering context is bound to a new window.
  774.  
  775.           +o Rendering to aux buffers does not work correctly on
  776.             RealityEngine, EXTREME and Elan systems.
  777.  
  778.        6.7  _C_h_a_n_g_e_s_,__A_d_d_i_t_i_o_n_s__a_n_d__K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__5_._1_x
  779.  
  780.        The following problems are known to exist in 5.1 and earlier
  781.        releases:
  782.  
  783.           +o For RealityEngine systems, visuals that include a 12-
  784.             bit accumulation buffer do not pass the conformance
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   - 13 -
  797.  
  798.  
  799.  
  800.             tests.  The 12-bit accumulation buffer is implemented
  801.             using unsigned arithmetic, but the OpenGL specification
  802.             requires signed arithmetic. The 24-bit accumulation
  803.             buffer implementation is conforming.
  804.  
  805.           +o The command glCopyContext is not functional on Onyx
  806.             systems.
  807.  
  808.           +o Using the _4_D_w_m menubar ``Quit'' or ``Close'' items to
  809.             kill an OpenGL application that uses an indirect
  810.             context will occasionally cause X server threads to not
  811.             get freed when the application terminates.
  812.  
  813.           +o Once an OpenGL indirect context has been made current
  814.             to a window, avoid making it current to a pixmap.
  815.             Likewise, once an indirect context has been made
  816.             current to a pixmap, avoid making it current to a
  817.             window.
  818.  
  819.           +o Multiple OpenGL renderers rendering to the same window
  820.             does not always work.
  821.  
  822.           +o These releases are not `tuned' nor are they thoroughly
  823.             tested.
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.