pfAntialias(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
NAME
pfAntialias, pfGetAntialias - Specify antialiasing mode
FUNCTION SPECIFICATION
#include <Performer/pr.h>
void pfAntialias(int mode);
int pfGetAntialias(void);
PARAMETERS
mode is a symbolic constant and is one of:
PFAA_OFF Antialiasing will be disabled.
PFAA_ON Antialiasing will be enabled. The antialiasing
mechanism used depends on the machine type.
DESCRIPTION
pfAntialias sets the hardware antialiasing mode. Geometry drawn
subsequent to calling pfAntialias will be antialiased according to mode.
The antialiasing mechanism used is machine-dependent: multisampling on
InfiniteReality and RealityEngine systems and non-multisampling on all
others. In addition, if available, pfAntialias will enable a special
hardware mode that efficiently renders points using multisampled circles
rather than squares. See the SGIS_multisample section of the OpenGL
glIntro(3g) man page for more detailed information on multisampled
antialiasing.
If mode is PFAA_ON, then antialiasing will be enabled. On machines which
do not support multisampling, PFAA_ON will enable line and/or point
antialiasing if either are supported in hardware. Polygons will not be
antialiased. In this case it is recommended that pfAntialias be enabled
only for points and lines since it may reduce the speed of polygon
rendering. Line or point antialiasing can be explicitly enabled by
specifying either PFAA_LINE_SMOOTH or PFAA_POINT_SMOOTH as the mode for
pfAntialias.
X windows cannot have their framebuffer resources reconfigured. X
windows for OpenGL are, by default, created with multisample buffers if
they are available in the current hardware configuration. The default
configuration, if available will be 8 subsamples, 24 bits of depth
buffer, and 4 bits of stencil. If this is not available, 1 bit of
stencil will be used, and then 4 subsamples will be allocated if 8 are
not still available. The exact framebuffer configuration of windows can
be specified via pfWindow::setFBConfigAttrs.
For X windows, if mode is PFAA_OFF, the antialiasing mode will be
disabled but the buffers cannot be deallocated and there might be
associated framebuffer operations that are not truly disabled. Because of
this, the full performance benefit expected by turning off antialiasing
may not be achieved.
Page 1
pfAntialias(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
The antialiasing mode state element is identified by the
PFSTATE_ANTIALIAS token. Use this token with pfGeoState::setMode to set
the antialiasing mode of a pfGeoState and with pfOverride to override
subsequent antialiasing mode changes.
pfAntialias is a display-listable command. If a pfDispList has been
opened by pfDispList::open, pfAntialias will not have immediate effect
but will be captured by the pfDispList and will only have effect when
that pfDispList is later drawn with pfDispList::draw.
pfGetAntialias returns the current antialiasing mode.
Example 1:
/* Set up 'antialiased' pfGeoState */
gstate->setMode(PFSTATE_ANTIALIAS, PFAA_ON);
/* Attach gstate to gset */
gset->setGState(gstate);
/* Draw antialiased gset */
gset->draw();
Example 2:
/* Override antialiasing mode to PFAA_OFF */
pfAntialias(PFAA_OFF);
pfOverride(PFSTATE_ANTIALIAS, PF_ON);
NOTES
pfQueryFeature can be used to determined what features are available on
the current hardware configuration. pfQuerySys can be used to query the
exact extent of hardware resources, such as number of subsamples
available for multisampling.
When using antialiasing without multisampling, blending is used which may
conflict with other transparency modes. Specifically, all geometry will
be blended which may cause artifacts and may substantially reduce
performance. For this reason pfAntialias should be used with discretion
on all but InfiniteReality and RealityEngine systems.
In the default framebuffer configurations, the 4 bit of stencil buffer is
allocated to support depth complexity fill statistics; see the pfStats
man page for more information. 1 bit of stencil is required for the
support of high quality decals; see the pfDecal man page for more
information.
Not all machines support stencil planes and in these cases, stencil bits
Page 2
pfAntialias(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
will not be allocated. The Extreme graphics platforms only support
stencil with reduced depth buffer resolution and so stencil will not be
allocated by default.
If a window has been configured with multisample buffers, the state of
pfAntialias() is used internally to track whether or not multisampling is
being done. This knowledge is used for doing the fast TAG clear
pfClear(), and for drawing multisampled points. OpenGL Performer will not
detect a GL call made to enable or disable multisampling so if you do
this you must return state to match OpenGL Performer's internal state or
the results will be undefined.
SEE ALSO
blendfunction, glBlendFunc, linesmooth, glHint(GL_LINE_SMOOTH_HINT),
pntsmooth, glHint(GL_POINT_SMOOTH_HINT), mssize, multisample, glIntro,
pfQueryFeature, pfQuerySys, pfWindow, pfChooseFBConfig, pfDispList,
pfGeoState, pfOverride, pfState
Page 3