pfWSConnection(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
NAME
pfGetCurWSConnection, pfOpenWSConnection, pfSelectWSConnection,
pfOpenScreen, pfCloseWSConnection, pfGetWSConnectionName,
pfGetScreenSize, pfGetNumScreenVChans, pfChooseFBConfig,
pfChooseFBConfigData - Window system utility routines
FUNCTION SPECIFICATION
#include <Performer/pr.h>
pfWSConnectionpfGetCurWSConnection(void);
pfWSConnection pfOpenWSConnection(const char *str, int shared);
void pfSelectWSConnection(pfWSConnection ws);
pfWSConnection pfOpenScreen(int screen, int shared);
void pfCloseWSConnection(pfWSConnection ws);
const char* pfGetWSConnectionName(pfWSConnection ws);
void pfGetScreenSize(int screen, int *x, int *y);
void pfGetNumScreenVChans(int screen);
pfFBConfig pfChooseFBConfig(pfWSConnection ws, int screen,
int *attr);
pfFBConfig pfChooseFBConfigData(void **dst, pfWSConnection ws,
int screen, int *attr, void *arena);
/* typedef of X-based Performer Types */
typedef Display *pfWSConnection;
typedef XVisualInfo pfFBConfig;
typedef Window pfWSWindow;
typedef Drawable pfWSDrawable;
/* typedef of GL-based Performer Types */
typedef GLXContext pfGLContext;
PARAMETERS
ws identifies a pfWSConnection.
DESCRIPTION
These functions provide a single API for communicating with the window
system.
These routines communicate with the window system via a pfWSConnection to
a window server. This connection is per-process. If a process tries to
Page 1
pfWSConnection(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
use the pfWSConnection of another process, bad things are likely to
result. A process may use its pfWSConnection to open and communication
with all windows on all screens managed by that window server.
Typically, a given machine will have a single window server, even if they
have multiple screens -- all screens are managed by the single server.
Exceptions are the multiple-keyboard machines. A pfWSConnection has a
default screen on which windows will be opened if no other screen is
explicitly named (such as through pfWindow::setScreen). This default
screen is determined by the DISPLAY environment variable, and is screen 0
if the DISPLAY variable is unset.
A pfWSWindow is a window-server X window. A pfWSDrawable is a window
system primitive that may be connected to a GL drawing context. A
pfWSDrawable includes Pixmaps. pfGLContext is the GL context that is
attached to the pfWSDrawable.
Windows have framebuffer resources associated with them, such as a
zbuffer, stencil planes, and possibly multisample buffers. A framebuffer
configuration can be created by pfChooseFBConfig, or
pfWindow::chooseFBConfig, and is returned in a pfFBConfig.
pfGetCurWSConnection returns the current connection to the window system.
If there is no current open connection, one is opened on the default
display (using the DISPLAY environment variable).
pfOpenWSConnection opens the window server connection named by str and if
shared is true, this connection will be shared with OpenGL Performer and
made the current libpr window system connection via a call to
pfSelectWSConnection.
pfOpenScreen opens a local window server connection with the default
screen of screen. If screen is (-1), the default screen as set by the
DISPLAY environment variable will be used, or screen 0 if this variable
is unset. Note that all window system connections can communication with
all screens managed by that window server, regardless of the value of the
default screen.
pfSelectWSConnection sets the current OpenGL Performer libpr window
system connection to be ws. The DISPLAY environment variable for that
process will be set to the connection name for ws using the putenv(3C)
command. This window system connection will be that returned by
pfGetCurWSConnection.
pfCloseWSConnection will close the specified window server connection via
XCloseDisplay. If ws was the currently selected libpr, window server
connection, the current connection will be reset to NULL.
pfGetWSConnectionName will return the string name for the window system
connection. In the X window system, this corresponds to the string
returned by the XDisplayString call.
pfGetScreenSize returns the X and Y size of screen for the server of the
Page 2
pfWSConnection(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
current window system connection in x and y.
pfGetNumScreenVChans returns the number of active hardware video channels
on screen for the current pfWSConnection.
pfChooseFBConfig takes an array of PFFB_ attribute tokens in attr and
returns a matching pfFBConfig describing a framebuffer configuration for
the given window system connection, ws, and screen screen. If ws is
null, the current libpr window system connection will be used. If screen
is (-1), the default screen for the window system connection will be
used. The attribute tokens and their values match the OpenGL GLX tokens
(see glXChooseVisual for additional information). These tokens and their
values are (booleans are true if present and should NOT be followed by
any values):
PFFB_USE_GL
Boolean, true if present. Use GLX rendering (the default).
PFFB_BUFFER_SIZE
Depth of the color buffer
PFFB_LEVEL
Level in plane stacking. 0 is the main window. negative
numbers are underlay planes, positive numbers are overlay
planes.
PFFB_RGBA
Boolean, does RGBA mode if present
PFFB_DOUBLEBUFFER
Boolean, does double buffering if present
PFFB_STEREO
Boolean, does stereo buffering if present
PFFB_AUX_BUFFERS
Number of auxiliary buffers
PFFB_RED_SIZE
Number of red component bits
PFFB_GREEN_SIZE
Number of green component bits
PFFB_BLUE_SIZE
Number of blue component bits
PFFB_ALPHA_SIZE
Number of alpha component bits
Page 3
pfWSConnection(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
PFFB_DEPTH_SIZE
Number of depth bits
PFFB_STENCIL_SIZE
Number of stencil bits
PFFB_ACCUM_RED_SIZE
Number of red accumulation bits
PFFB_ACCUM_GREEN_SIZE
Number of green accumulation bits
PFFB_ACCUM_BLUE_SIZE
Number of blue accumulation bits
PFFB_ACCUM_ALPHA_SIZE
Number of alpha accumulation bits
PFFB_SAMPLES_SGIS
Number of samples per pixel
PFFB_SAMPLE_BUFFERS_SGIS
The number of multisample buffers
The list must be terminated with a NULL or None. OpenGL Performer will
try to use a multisample buffer with 8 samples per pixel unless the
number of samples or number of multisample buffers has been explicitly
set to 0 in the attribute array. The default Performer framebuffer
configuration looks like:
static int FBAttrs[] =
{
PFFB_RGBA,
PFFB_DOUBLEBUFFER,
PFFB_DEPTH_SIZE, 24,
PFFB_RED_SIZE, 8,
PFFB_SAMPLES, 8,
PFFB_STENCIL_SIZE, 4,
None
};
SEE ALSO
pfWindow, glXChooseVisual, GLXgetconfig, XOpenDisplay, XCloseDisplay
Page 4