pfEnable(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages pfEnable(3pf)NAME
pfEnable, pfDisable, pfGetEnable - Enable and disable graphics modes.
FUNCTION SPECIFICATION
#include <Performer/pr.h>
void pfEnable(int mode);
void pfDisable(int mode);
int pfGetEnable(int mode);
PARAMETERS
mode is a symbolic constant that specifies the enable target which is to
be enabled or disabled. The enable targets are:
PFEN_LIGHTING Hardware lighting
PFEN_TEXTURE Hardware texturing (tex unit 0)
PFEN_TEXTURE_0 Hardware texturing (tex unit 0)
PFEN_TEXTURE_1 Hardware texturing (tex unit 1)
PFEN_TEXTURE_2 Hardware texturing (tex unit 2)
PFEN_TEXTURE_3 Hardware texturing (tex unit 3)
PFEN_TEXTURE_4 Hardware texturing (tex unit 4)
PFEN_TEXTURE_5 Hardware texturing (tex unit 5)
PFEN_TEXTURE_6 Hardware texturing (tex unit 6)
PFEN_TEXTURE_7 Hardware texturing (tex unit 7)
PFEN_FOG Hardware fogging
PFEN_WIREFRAME Wireframe display mode
PFEN_COLORTABLE Colortable display mode
PFEN_HIGHLIGHTING Highlight display mode
PFEN_LPOINTSTATE Light point mode
PFEN_TEXGEN Automatic texture coordinate
generation (tex unit 0)
PFEN_TEXGEN_0 Automatic texture coordinate
generation (tex unit 0)
Page 1
pfEnable(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages pfEnable(3pf)
PFEN_TEXGEN_1 Automatic texture coordinate
generation (tex unit 1)
PFEN_TEXGEN_2 Automatic texture coordinate
generation (tex unit 2)
PFEN_TEXGEN_3 Automatic texture coordinate
generation (tex unit 3)
PFEN_TEXGEN_4 Automatic texture coordinate
generation (tex unit 4)
PFEN_TEXGEN_5 Automatic texture coordinate
generation (tex unit 5)
PFEN_TEXGEN_6 Automatic texture coordinate
generation (tex unit 6)
PFEN_TEXGEN_7 Automatic texture coordinate
generation (tex unit 7)
PFEN_TEXLOD Use of texture LOD objects (tex unit
0)
PFEN_TEXLOD_0 Use of texture LOD objects (tex unit
0)
PFEN_TEXLOD_1 Use of texture LOD objects (tex unit
1)
PFEN_TEXLOD_2 Use of texture LOD objects (tex unit
2)
PFEN_TEXLOD_3 Use of texture LOD objects (tex unit
3)
PFEN_TEXLOD_4 Use of texture LOD objects (tex unit
4)
PFEN_TEXLOD_5 Use of texture LOD objects (tex unit
5)
PFEN_TEXLOD_6 Use of texture LOD objects (tex unit
6)
PFEN_TEXLOD_7 Use of texture LOD objects (tex unit
7)
PFEN_TEXMAT Use of current texture matrix (tex
unit 0)
Page 2
pfEnable(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages pfEnable(3pf)
PFEN_TEXMAT_0 Use of current texture matrix (tex
unit 0)
PFEN_TEXMAT_1 Use of current texture matrix (tex
unit 1)
PFEN_TEXMAT_2 Use of current texture matrix (tex
unit 2)
PFEN_TEXMAT_3 Use of current texture matrix (tex
unit 3)
PFEN_TEXMAT_4 Use of current texture matrix (tex
unit 4)
PFEN_TEXMAT_5 Use of current texture matrix (tex
unit 5)
PFEN_TEXMAT_6 Use of current texture matrix (tex
unit 6)
PFEN_TEXMAT_7 Use of current texture matrix (tex
unit 7)
PFEN_COMBINER Use of register combiners
PFEN_VTXPROG Use of ARB vertex programs
PFEN_FRAGPROG Use of ARB fragment programs
PFEN_SHADPROG Use of GLSL Shader programs
DESCRIPTION
pfEnable and pfDisable enable and disable various graphics library and
OpenGL Performer modes. By default all modes listed above are disabled,
i.e., when a pfState is first created, its enable modes are all PF_OFF.
pfGetEnable returns the enable status of the indicated mode.
Page 3
pfEnable(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages pfEnable(3pf)
Each pfEnable/pfDisable mode token corresponds to a PFSTATE_ token that
identifies the state element and is used in pfGeoState routines and
pfOverride with the exception of all PFEN_TEXTURE_i sharing a single bit,
all PFEN_TEXGEN_i sharing a single bit, all PFEN_TEXLOD_i sharing a
single bit and all PFEN_TEXMAT_i sharing a single bit.
The PFEN_ / PFSTATE_ correspondence is illustrated in the following
table:
Enable Token State Token
__________________________________________
PFEN_LIGHTING PFSTATE_ENLIGHTING
PFEN_TEXTURE PFSTATE_ENTEXTURE
PFEN_FOG PFSTATE_ENFOG
PFEN_WIREFRAME PFSTATE_ENWIREFRAME
PFEN_COLORTABLE PFSTATE_ENCOLORTABLE
PFEN_HIGHLIGHTING PFSTATE_ENHIGHLIGHTING
PFEN_LPOINTSTATE PFSTATE_ENLPOINTSTATE
PFEN_TEXGEN PFSTATE_ENTEXGEN
PFEN_TEXLOD PFSTATE_ENTEXLOD
PFEN_TEXMAT PFSTATE_ENTEXMAT
PFEN_COMBINER PFSTATE_ENCOMBINER
PFEN_VTXPROG PFSTATE_ENVTXPROG
PFEN_FRAGPROG PFSTATE_ENFRAGPROG
PFEN_SHADPROG PFSTATE_ENSHADPROG
|
Once enabled or disabled, these mode changes will not take effect until
their associated OpenGL Performer state elements are applied. The
following table lists the modes, state objects, and provoking activation
routine for each mode.
Enable Mode Required State Activation Routine
______________________________________________________________
PFEN_LIGHTING pfLightModel pfLightModel::apply
pfMaterial
pfLight
normals
PFEN_TEXTURE pfTexture pfTexture::apply
pfTexEnv
texture coordinates
PFEN_FOG pfFog pfFog::apply
PFEN_COLORTABLE pfColortable pfColortable::apply
PFEN_HIGHLIGHTING pfHighlight pfHighlight::apply
PFEN_LPOINTSTATE pfLPointState pfLPointState::apply
|
|
Page 4
pfEnable(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages pfEnable(3pf)
PFEN_TEXGEN pfTexGen pfTexGen::apply
PFEN_TEXLOD pfTexLOD pfTexLOD::apply
PFEN_TEXMAT pfTexMat none
PFEN_COMBINER pfCombiner pfCombiner::apply
PFEN_VTXPROG pfVertexProgram pfGProgram::apply
PFEN_FRAGPROG pfFragmentProgram pfGProgram::apply
PFEN_SHADPROG pfShaderProgram pfShaderProgram::apply
PFEN_WIREFRAME none none
|
|
Use the PFSTATE_ tokens with pfGeoSet::setMode to set the enable modes of
a pfGeoState and with pfOverride to override subsequent enable mode
changes:
Example 1:
/* Set up textured pfGeoState */
gstate->setMode(PFSTATE_ENTEXTURE, PF_ON);
gstate->setAttr(PFSTATE_TEXTURE, tex);
gstate->setAttr(PFSTATE_TEXENV, texEnv);
/* Attach gstate to gset */
gset->setGState(gstate);
/* Draw textured gset */
gset->draw();
Example 2:
/* Override lighting and texturing enable modes to PF_OFF */
pfDisable(PFEN_LIGHTING);
pfDisable(PFEN_TEXTURE);
pfOverride(PFSTATE_ENLIGHTING | PFSTATE_ENTEXTURE, PF_ON);
pfEnable and pfDisable are display-listable commands. If a pfDispList
has been opened by pfDispList::open, then pfEnable and pfDisable will not
have immediate effect. They will be captured by the pfDispList and will
take effect when that pfDispList is later drawn with pfDispList::draw.
pfBasicState disables all of the above modes.
notes When lighting is disabled, lmcolor mode is set to LMC_COLOR which
effectively turns it off. Then when enabled, the lmcolor mode is
restored to that of the current front material if there is one.
Page 5
pfEnable(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages pfEnable(3pf)SEE ALSO
pfDispList, pfGeoSet, pfGeoState, pfOverride, pfState
Page 6