pfViewMat(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
NAME
pfModelMat, pfGetModelMat, pfViewMat, pfGetViewMat, pfInvViewMat,
pfGetInvViewMat, pfProjMat, pfGetProjMat, pfInvModelMat,
pfGetInvModelMat, pfNearPixDist, pfGetNearPixDist, pfTexMat, pfGetTexMat
- Set/get shadows of viewing, modeling, texturing, and inverse modeling
matrices; set/get near plane pixel distance
FUNCTION SPECIFICATION
#include <Performer/pr.h>
void pfModelMat(pfMatrix mat);
void pfGetModelMat(pfMatrix mat);
void pfViewMat(pfMatrix mat);
void pfGetViewMat(pfMatrix mat);
void pfInvViewMat(pfMatrix mat);
void pfGetInvViewMat(pfMatrix mat);
void pfProjMat(pfMatrix mat);
void pfGetProjMat(pfMatrix mat);
void pfInvModelMat(pfMatrix mat);
void pfGetInvModelMat(pfMatrix mat);
void pfNearPixDist(float npd);
float pfGetNearPixDist(void);
void pfTexMat(pfMatrix mat);
void pfGetTexMat(pfMatrix mat);
DESCRIPTION
Certain eyepoint-dependent features require knowledge about the viewing
and modeling matrices as well as knowledge about the mapping of eye to
window coordinates. Current eyepoint-dependent features include
pfLPointState, which renders PFGS_POINTS pfGeoSets as "light points" and
pfSprite, which rotates geometry to face the viewer.
pfViewMat, pfProjMat, pfModelMat, pfTexMat and pfNearPixDist set the
current viewing matrix, projection matrix, modeling matrix, texture
matrix, and distance to the near (view) plane in pixels. These routines
in no way affect the graphics library or its transformation stack. They
only specify values used internally by libpr. libpf applications do not
need to call these routines unless they modify associated values through
the graphics library instead of through libpr matrix routines, e.g., if
Page 1
pfViewMat(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
the viewing transform is set with pfLoadMatrix instead of pfChanViewMat.
pfTexMat is provided so libpr can change, then restore the current
texture matrix without incurring the cost of querying the graphics
library for the matrix value.
pfLPointState and pfSprite both require the viewing and modeling
matrices. The inverse modeling matrix is automatically computed by
OpenGL Performer when necessary unless it is specified by the application
with pfInvModelMat. pfLPointState also requires the distance, measured in
pixels, from the eyepoint to the near plane of the viewing frustum. This
value is required in order to render light points at their proper screen
size. Use pfNearPixDist to set the "near pixel distance" and
pfGetNearPixDist to get it. pfCalligraphic requieres the projection
matrix also to be set before caling pfDispList::preprocess. It also make
use of the inverse viewing matrix that is automatically computed unless
specified with pfInvViewMat.
pfViewMat makes mat the current viewing matrix. mat is a 4x4 homogeneous
matrix which defines the view coordinate system such that the upper 3x3
submatrix defines the coordinate system axes and the bottom vector
defines the coordinate system origin. OpenGL Performer defines the view
direction to be along the positive Y axis and the up direction to be the
positive Z direction, e.g., the second row of mat defines the viewing
direction and the third row defines the up direction in world
coordinates. mat must be orthonormal or results are undefined.
pfGetViewMat copies the current viewing matrix into mat.
pfModelMat makes mat the current modeling matrix. pfGetModelMat copies
the current modeling matrix into mat.
pfProjMat makes mat the current projection matrix. pfGetProjMat copies
the current projection matrix into mat.
pfViewMat, pfModelMat, pfProjMat, pfTexMat, pfInvModelMat, pfInvViewMat,
and pfNearPixDist are all display-listable commands. If a pfDispList has
been opened by pfOpenDList, these commands will not have immediate effect
but will be captured by the pfDispList and will only have effect when
that pfDispList is later drawn with pfDrawDList.
SEE ALSO
pfLPointState, pfSprite, pfDispList
Page 2