Producer::RenderSurface Class Reference

A RenderSurface provides a rendering surface for 3D graphics applications. More...

Inheritance diagram for Producer::RenderSurface:

Producer::Referenced List of all members.

Public Types

 DrawableType_Window
 DrawableType_PBuffer
 FrontBuffer
 BackBuffer
 RenderToTextureMode_None
 RenderToRGBTexture
 RenderToRGBATexture
 Texture1D
 Texture2D
 TextureCUBE
 RenderToTextureOptions_Default = 0
 RequestSpaceForMipMaps = 1
 RequestLargestPBuffer = 2
 PositiveX = 0
 NegativeX = 1
 PositiveY = 2
 NegativeY = 3
 PositiveZ = 4
 NegativeZ = 5
enum  DrawableType { DrawableType_Window, DrawableType_PBuffer }
enum  BufferType { FrontBuffer, BackBuffer }
enum  RenderToTextureMode { RenderToTextureMode_None, RenderToRGBTexture, RenderToRGBATexture }
enum  RenderToTextureTarget { Texture1D, Texture2D, TextureCUBE }
enum  RenderToTextureOptions { RenderToTextureOptions_Default = 0, RequestSpaceForMipMaps = 1, RequestLargestPBuffer = 2 }
enum  CubeMapFace {
  PositiveX = 0, NegativeX = 1, PositiveY = 2, NegativeY = 3,
  PositiveZ = 4, NegativeZ = 5
}

Public Member Functions

 RenderSurface (void)
void setDrawableType (DrawableType)
DrawableType getDrawableType ()
void setReadDrawable (RenderSurface *)
RenderSurfacegetReadDrawable ()
void setInputRectangle (const InputRectangle &ir)
const InputRectanglegetInputRectangle () const
void bindInputRectangleToWindowSize (bool)
void setHostName (const std::string &)
const std::string & getHostName (void) const
void setDisplayNum (int)
int getDisplayNum (void) const
void setScreenNum (int)
int getScreenNum (void) const
void getScreenSize (unsigned int &width, unsigned int &height) const
void setWindowName (const std::string &)
const std::string & getWindowName (void) const
void setWindowRectangle (int x, int y, unsigned int width, unsigned int height, bool resize=true)
void getWindowRectangle (int &x, int &y, unsigned int &width, unsigned int &height) const
int getWindowOriginX () const
int getWindowOriginY () const
unsigned int getWindowWidth () const
unsigned int getWindowHeight () const
void setDisplay (Display *dpy)
Display * getDisplay (void)
const Display * getDisplay (void) const
void setWindow (const Window win)
Window getWindow (void) const
void setGLContext (GLContext)
GLContext getGLContext (void) const
void setParentWindow (Window parent)
Window getParentWindow (void) const
void setVisualChooser (VisualChooser *vc)
VisualChoosergetVisualChooser (void)
const VisualChoosergetVisualChooser (void) const
void setVisualInfo (VisualInfo *vi)
VisualInfo * getVisualInfo (void)
const VisualInfo * getVisualInfo (void) const
bool isRealized (void) const
void useBorder (bool flag)
bool usesBorder ()
void useOverrideRedirect (bool)
bool usesOverrideRedirect ()
void useCursor (bool flag)
void setCursor (Cursor)
void setCursorToDefault ()
void useConfigEventThread (bool flag)
bool realize (VisualChooser *vc=NULL, GLContext sharedGLContext=0)
void addRealizeCallback (Callback *realizeCB)
void setRealizeCallback (Callback *realizeCB)
virtual void swapBuffers (void)
bool makeCurrent (void) const
virtual void sync (int divisor=1)
unsigned int getRefreshRate () const
bool waitForRealize ()
void fullScreen (bool flag)
void setCustomFullScreenRectangle (int x, int y, unsigned int width, unsigned int height)
void useDefaultFullScreenRectangle ()
bool isFullScreen () const
void positionPointer (int x, int y)
void setUseDefaultEsc (bool flag)
bool getUseDefaultEsc ()
void mapWindow ()
void unmapWindow ()
void bindPBufferToTexture (BufferType buffer=FrontBuffer) const
RenderToTextureMode getRenderToTextureMode () const
void setRenderToTextureMode (RenderToTextureMode mode)
RenderToTextureTarget getRenderToTextureTarget () const
void setRenderToTextureTarget (RenderToTextureTarget target)
RenderToTextureOptions getRenderToTextureOptions () const
void setRenderToTextureOptions (RenderToTextureOptions options)
int getRenderToTextureMipMapLevel () const
void setRenderToTextureMipMapLevel (int level)
CubeMapFace getRenderToTextureFace () const
void setRenderToTextureFace (CubeMapFace face)
const std::vector< int > & getPBufferUserAttributes () const
std::vector< int > & getPBufferUserAttributes ()

Static Public Member Functions

static unsigned int getNumberOfScreens (void)
static const std::string & getDefaultWindowName ()
static void shareAllGLContexts (bool)
static bool allGLContextsAreShared ()
static void initThreads ()

Static Public Attributes

static const unsigned int UnknownDimension
static const unsigned int UnknownAmount
static unsigned int _numScreens
static const std::string defaultWindowName

Protected Member Functions

virtual ~RenderSurface (void)
void _useOverrideRedirect (bool)
void _computeScreenSize (unsigned int &width, unsigned int &height) const
bool _createVisualInfo ()
virtual bool _init ()
virtual void _fini ()
virtual void run ()

Static Protected Member Functions

static void _initThreads ()

Protected Attributes

DrawableType _drawableType
std::string _hostname
int _displayNum
float _windowLeft
float _windowRight
float _windowBottom
float _windowTop
int _windowX
int _windowY
unsigned int _windowWidth
unsigned int _windowHeight
unsigned int _screenWidth
unsigned int _screenHeight
bool _useCustomFullScreen
int _customFullScreenOriginX
int _customFullScreenOriginY
unsigned int _customFullScreenWidth
unsigned int _customFullScreenHeight
Display * _dpy
int _screen
Window _win
Window _parent
RenderSurface_readDrawableRenderSurface
unsigned int _parentWindowHeight
bool _realized
ref_ptr< VisualChooser_visualChooser
VisualInfo * _visualInfo
unsigned int _visualID
GLContext _glcontext
GLContext _sharedGLContext
bool _decorations
bool _useCursorFlag
Cursor _currentCursor
Cursor _nullCursor
Cursor _defaultCursor
std::string _windowName
unsigned int _frameCount
bool _mayFullScreen
bool _isFullScreen
bool _bindInputRectangleToWindowSize
RenderToTextureMode _rtt_mode
RenderToTextureTarget _rtt_target
RenderToTextureOptions _rtt_options
int _rtt_mipmap
CubeMapFace _rtt_face
bool _rtt_dirty_mipmap
bool _rtt_dirty_face
std::vector< int > _user_pbattr
OpenThreads::Barrier * _threadReady
bool _useConfigEventThread
bool _checkOwnEvents
bool _useDefaultEsc
std::vector< Producer::ref_ptr<
Callback > > 
_realizeCallbacks
ref_ptr< Producer::Block_realizeBlock
InputRectangle _inputRectangle

Static Protected Attributes

static bool _shareAllGLContexts
static GLContext _globallySharedGLContext

Classes

class  Callback
struct  InputRectangle

Detailed Description

A RenderSurface provides a rendering surface for 3D graphics applications.

A RenderSurface creates a window in a windowing system for the purpose of 3D rendering. The focus of a RenderSurface differs from a windowing system window in that it is not a user input/output device, but rather a context and screen area specifically designed for 3D applications. Consequently, a RenderSurface does not provide or impose a requirement on the caller to structure the application around the capturing or handling of events. Further, RenderSurface provides increased control over the quality of pixel formats.


Member Enumeration Documentation

enum Producer::RenderSurface::BufferType

Enumerator:
FrontBuffer 
BackBuffer 

enum Producer::RenderSurface::CubeMapFace

Enumerator:
PositiveX 
NegativeX 
PositiveY 
NegativeY 
PositiveZ 
NegativeZ 

enum Producer::RenderSurface::DrawableType

Enumerator:
DrawableType_Window 
DrawableType_PBuffer 

enum Producer::RenderSurface::RenderToTextureMode

Enumerator:
RenderToTextureMode_None 
RenderToRGBTexture 
RenderToRGBATexture 

enum Producer::RenderSurface::RenderToTextureOptions

Enumerator:
RenderToTextureOptions_Default 
RequestSpaceForMipMaps 
RequestLargestPBuffer 

enum Producer::RenderSurface::RenderToTextureTarget

Enumerator:
Texture1D 
Texture2D 
TextureCUBE 


Constructor & Destructor Documentation

Producer::RenderSurface::RenderSurface ( void   ) 

virtual Producer::RenderSurface::~RenderSurface ( void   )  [protected, virtual]


Member Function Documentation

void Producer::RenderSurface::_computeScreenSize ( unsigned int &  width,
unsigned int &  height 
) const [protected]

bool Producer::RenderSurface::_createVisualInfo (  )  [protected]

virtual void Producer::RenderSurface::_fini (  )  [protected, virtual]

virtual bool Producer::RenderSurface::_init (  )  [protected, virtual]

static void Producer::RenderSurface::_initThreads (  )  [static, protected]

void Producer::RenderSurface::_useOverrideRedirect ( bool   )  [protected]

void Producer::RenderSurface::addRealizeCallback ( Callback realizeCB  ) 

static bool Producer::RenderSurface::allGLContextsAreShared (  )  [static]

Returns true or false indicating the the state flag for sharing contexts between RenderSurfaces

void Producer::RenderSurface::bindInputRectangleToWindowSize ( bool   ) 

void Producer::RenderSurface::bindPBufferToTexture ( BufferType  buffer = FrontBuffer  )  const

Bind PBuffer content to the currently selected texture. This method affects PBuffer surfaces only.

void Producer::RenderSurface::fullScreen ( bool  flag  ) 

fullScreen(flag). If flag is true, RenderSurface resizes its window to fill the entire screen and turns off the border. If false, the window is returned to a size previously specified. If previous state specified a border around the window, a the border is replaced

static const std::string& Producer::RenderSurface::getDefaultWindowName (  )  [static]

const Display* Producer::RenderSurface::getDisplay ( void   )  const

Get the const Display. (X11 only).

Display* Producer::RenderSurface::getDisplay ( void   ) 

Get the Display. (X11 only).

int Producer::RenderSurface::getDisplayNum ( void   )  const

Get the number of the display the render surface is to be created on. In XWindows, this is the number of the XServer. Ignored on Win32

DrawableType Producer::RenderSurface::getDrawableType (  ) 

GLContext Producer::RenderSurface::getGLContext ( void   )  const

Returns the OpenGL context

const std::string& Producer::RenderSurface::getHostName ( void   )  const

Get the name of the Host the window is to be created on. Ignored on Win32

const InputRectangle& Producer::RenderSurface::getInputRectangle (  )  const

static unsigned int Producer::RenderSurface::getNumberOfScreens ( void   )  [static]

Window Producer::RenderSurface::getParentWindow ( void   )  const

Get the Windowing system's parent window

std::vector<int>& Producer::RenderSurface::getPBufferUserAttributes (  ) 

Get the vector of user-defined PBuffer attributes. This vector will be used to initialize the PBuffer's attribute list.

const std::vector<int>& Producer::RenderSurface::getPBufferUserAttributes (  )  const

Get the (const) vector of user-defined PBuffer attributes.

RenderSurface* Producer::RenderSurface::getReadDrawable (  )  [inline]

unsigned int Producer::RenderSurface::getRefreshRate (  )  const

Where supported, getRefreshRate() will return the frequency in hz of the vertical retrace signal of the graphics display device. If getRefreshRate() returns 0, then the underlying support to get the graphics display device's vertical retrace signal is not present.

CubeMapFace Producer::RenderSurface::getRenderToTextureFace (  )  const

Get which face on the target cube map texture will be affected by rendering.

int Producer::RenderSurface::getRenderToTextureMipMapLevel (  )  const

Get which mipmap level on the target texture will be affected by rendering.

RenderToTextureMode Producer::RenderSurface::getRenderToTextureMode (  )  const

Get the render-to-texture mode (PBuffer drawables only). This method has no effect if it is called after realize()

RenderToTextureOptions Producer::RenderSurface::getRenderToTextureOptions (  )  const

Get the render-to-texture options (PBuffer drawables only). This method has no effect if it is called after realize().

RenderToTextureTarget Producer::RenderSurface::getRenderToTextureTarget (  )  const

Get the render-to-texture target (PBuffer drawables only). This method has no effect if it is called after realize().

int Producer::RenderSurface::getScreenNum ( void   )  const

Get the number of the screen the render surface is to be created on. In XWindows, this is the number of the XServer. Ignored on Win32

void Producer::RenderSurface::getScreenSize ( unsigned int &  width,
unsigned int &  height 
) const

Get the size of the screen in pixels the render surface is to be created on.

bool Producer::RenderSurface::getUseDefaultEsc (  )  [inline]

const VisualChooser* Producer::RenderSurface::getVisualChooser ( void   )  const

VisualChooser* Producer::RenderSurface::getVisualChooser ( void   ) 

const VisualInfo* Producer::RenderSurface::getVisualInfo ( void   )  const

VisualInfo* Producer::RenderSurface::getVisualInfo ( void   ) 

Window Producer::RenderSurface::getWindow ( void   )  const

Returns the Windowing system handle to the window

unsigned int Producer::RenderSurface::getWindowHeight (  )  const

Get the height of the RenderSurface in windowing system screen coordinates

const std::string& Producer::RenderSurface::getWindowName ( void   )  const

Get the Window system Window name of the Render Surface

int Producer::RenderSurface::getWindowOriginX (  )  const

Get the X coordinate of the origin of the RenderSurface's window

int Producer::RenderSurface::getWindowOriginY (  )  const

Get the Y coordinate of the origin of the RenderSurface's window

void Producer::RenderSurface::getWindowRectangle ( int &  x,
int &  y,
unsigned int &  width,
unsigned int &  height 
) const

Get the windowing system rectangle the RenderSurface will occupy on the screen. The parameters are given as integers in screen space. x and y determine the lower left hand corner of the RenderSurface. Width and height are given in screen coordinates

unsigned int Producer::RenderSurface::getWindowWidth (  )  const

Get the width of the RenderSurface in windowing system screen coordinates

static void Producer::RenderSurface::initThreads (  )  [static]

Where supported, initThreads will initialize all graphics components for thread safety. InitThreads() should be called before any other calls to Xlib, or OpenGL are made, and should always be called when multi-threaded environments are intended.

bool Producer::RenderSurface::isFullScreen (  )  const [inline]

isFullScreen() returns true if the RenderSurface's window fills the entire screen and has no border.

bool Producer::RenderSurface::isRealized ( void   )  const

Returns true if the RenderSurface has been realized, false if not.

bool Producer::RenderSurface::makeCurrent ( void   )  const

Makes the graphics context and RenderSurface current for rendering

void Producer::RenderSurface::mapWindow (  ) 

map and unmap the window

void Producer::RenderSurface::positionPointer ( int  x,
int  y 
)

positionPointer(x,y) places the pointer at window coordinates x, y.

bool Producer::RenderSurface::realize ( VisualChooser vc = NULL,
GLContext  sharedGLContext = 0 
)

Realize the RenderSurface. When realized, all components of the RenderSurface not already configured are configured, a window and a graphics context are created and made current. If an already existing graphics context is passed through "sharedGLContext", then the graphics context created will share certain graphics constructs (such as display lists) with "sharedGLContext".

virtual void Producer::RenderSurface::run (  )  [protected, virtual]