Back to the OpenGL extension cross reference

GL_EXT_polygon_offset


Name


    EXT_polygon_offset

Name String


    GL_EXT_polygon_offset

Version


    $Date: 1995/06/17 03:34:49 $ $Revision: 1.12 $

Number


    3

Dependencies


    None

Overview


    The depth values of fragments generated by rendering polygons are
displaced by an amount that is proportional to the maximum absolute
value of the depth slope of the polygon, measured and applied in window
coordinates. This displacement allows lines (or points) and polygons
in the same plane to be rendered without interaction -- the lines
rendered either completely in front of or behind the polygons
(depending on the sign of the offset factor). It also allows multiple
coplanar polygons to be rendered without interaction, if different
offset factors are used for each polygon. Applications include
rendering hidden-line images, rendering solids with highlighted edges,
and applying `decals' to surfaces.

New Procedures and Functions


    void PolygonOffsetEXT(float factor,
float bias);

New Tokens


    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and
by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
GetDoublev:

POLYGON_OFFSET_EXT 0x8037

Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev:

POLYGON_OFFSET_FACTOR_EXT 0x8038
POLYGON_OFFSET_BIAS_EXT 0x8039

Additions to Chapter 2 of the GL Specification (OpenGL Operation)


    None

Additions to Chapter 3 of the GL Specification (Rasterization)


    The changes to the GL Specification are limited to the description of
polygon rasterization, specifically while the polygon mode (specified
by calling PolygonMode) is FILL. The GL Specification requires that
fragment Z values during such rasterization be computed using the
equation


Z = (a * Za) + (b * Zb) + (c * Zc)


where a, b, and c are the barycentric coordinates of the fragment
center, and Za, Zb, and Zc are the Z values of the triangle's vertices.
When POLYGON_OFFSET_EXT is enabled, this extension modifies this
equation as follows:


Z' = (a * Za) + (b * Zb) + (c * Zc) + (factor * maxdZ) + bias


/ 0 Z' < 0
Z = < Z' 0 <= Z' <= 1
\ 1 Z' > 1


where factor and bias are the polygon offset factor and bias as
specified by PolygonOffsetEXT, and maxdZ is the maximum positive change
in Z for a unit-step in the X,Y plane. MaxdZ can be approximated as
the larger of the absolute values of dZ/dX and dZ/dY, the rates of
change of Z in the positive X and Y directions. The equations for
maxdZ, dZ/dX, and dZ/dY are:


2 2
maxdZ = sqrt[ (dZ/dX) + (dZ/dY) ]


((Yc - Yb) * (Zb - Za)) - ((Yb - Ya) * (Zc - Zb))
dZ/dX = -------------------------------------------------
area


((Xb - Xa) * (Zc - Zb)) - ((Xc - Xb) * (Zb - Za))
dZ/dY = -------------------------------------------------
area


area = ((Xb - Xa) * (Yc - Yb)) - ((Xc - Xb) * (Yb - Ya))


To simplify the calculations, maxdZ may be approximated by


maxdZ = maximum( |dZ/dX| , |dZ/dY| )


Note that all these equations treat window coordinate Z values as
ranging from 0.0 through 1.0, regardless of their actual representation
(refer to Controlling the Viewport in Chapter 2 of the GL Specification).

POLYGON_OFFSET_EXT is enabled and disabled using Enable and Disable with
parameter <cap> specified as POLYGON_OFFSET_EXT.

Additions to Chapter 4 of the GL Specification (Per-Fragment Operations and the Framebuffer)


    None

Additions to Chapter 5 of the GL Specification (Special Functions)


    None

Additions to Chapter 6 of the GL Specification (State and State Requests)


    None

Additions to the GLX Specification


    None

GLX Protocol


    A new GL rendering command is added. The following command is sent to the 
server as part of a glXRender request:


PolygonOffsetEXT
2 12 rendering command length
2 4098 rendering command opcode
4 FLOAT32 factor
4 FLOAT32 bias

Errors


    INVALID_OPERATION is generated if PolygonOffsetEXT is called between
execution of Begin and the corresponding execution of End.

New State


							Initial
Get Value Get Command Type Value Attrib
--------- ----------- ---- ------- ------
POLYGON_OFFSET_EXT IsEnabled B False polygon/enable
POLYGON_OFFSET_FACTOR_EXT GetFloatv R 0 polygon
POLYGON_OFFSET_BIAS_EXT GetFloatv R 0 polygon

New Implementation Dependent State


    None

Implementation Support


   List of OpenGL implementations supporting the GL_EXT_polygon_offset extension

Original File


   Original text file for the GL_EXT_polygon_offset extension


Page generated on Sun Nov 20 18:37:20 2005