Equalizer  1.4.1
Public Member Functions | Protected Member Functions | Friends
eq::Channel Class Reference

A channel represents a two-dimensional viewport within a Window. More...

#include <channel.h>

+ Inheritance diagram for eq::Channel:
+ Collaboration diagram for eq::Channel:

List of all members.

Public Member Functions

 Channel (Window *parent)
 Construct a new channel.
virtual ~Channel ()
 Destruct the channel.
virtual bool processEvent (const Event &event)
 Process a received event.
virtual void drawStatistics ()
 Draw a statistics overlay.
virtual void outlineViewport ()
 Outline the current pixel viewport.
void changeLatency (const uint32_t latency)
Data Access
co::CommandQueuegetPipeThreadQueue ()
co::CommandQueuegetCommandThreadQueue ()
uint32_t getCurrentFrame () const
void waitFrameFinished (const uint32_t frame) const
bool isStopped () const
PipegetPipe ()
const PipegetPipe () const
NodegetNode ()
const NodegetNode () const
ConfiggetConfig ()
const ConfiggetConfig () const
ServerPtr getServer ()
const GLEWContext * glewGetContext () const
 Get the GLEW context for this channel.
ObjectManagergetObjectManager ()
const DrawableConfig & getDrawableConfig () const
ViewgetNativeView ()
 Get the channel's native view.
const ViewgetNativeView () const
 const-version of getNativeView()
util::FrameBufferObjectgetFrameBufferObject ()
const Vector3ub & getUniqueColor () const
void addStatistic (Event &event)
Context-specific data access.

The data returned by these methods depends on the context (callback) they are called from, typically the data for the current rendering task.

If they are called outside of a frame task method, they return the channel's native parameter or a placeholder value for the task decomposition parameters.

virtual Vector2f getJitter () const
const FramesgetInputFrames ()
const FramesgetOutputFrames ()
ViewgetView ()
 Get the channel's current View.
const ViewgetView () const
 Const version of getView().
Frustumf getScreenFrustum () const
 Returns an orthographic frustum for 2D operations on the view.
Operations

Operations are only meaningful from within certain callbacks.

They are just convenience wrappers applying context-specific data to the OpenGL state using the context-specific data access above.

virtual void applyBuffer ()
 Apply the current rendering buffer, including the color mask.
virtual void applyColorMask () const
 Apply the current color mask.
virtual void applyViewport () const
 Apply the OpenGL viewport for the current rendering task.
virtual void applyFrustum () const
 Apply the frustum matrix for the current rendering task.
virtual void applyPerspective () const
 Apply the perspective frustum matrix for the current rendering task.
virtual void applyOrtho () const
 Apply the orthographic frustum matrix for the current rendering task.
void applyScreenFrustum () const
 Apply an orthographic frustum for pixel-based 2D operations.
virtual void applyHeadTransform () const
 Apply the transformation to position the view frustum.
virtual void applyPerspectiveTransform () const
 Apply the transformation to position the perspective view frustum.
virtual void applyOrthoTransform () const
 Apply the transformation to position the orthographic view frustum.
virtual void applyFrameBufferObject ()
 Apply the current alternate frame buffer.
void bindFrameBuffer ()
 Rebind the current alternate FBO of the channel or window.
Region of Interest.
virtual void resetRegions ()
 Reset the declared regions of interest.
virtual void declareRegion (const eq::PixelViewport &region)
 Declare a region covered by the current draw or assemble operation.
void declareRegion (const eq::Viewport &vp)
 Convenience method to declare a region in relative coordinates.
PixelViewport getRegion () const
const PixelViewportsgetRegions () const
 Get the current regions of interest.

Protected Member Functions

void attach (const UUID &id, const uint32_t instanceID)
virtual void frameTilesStart (const uint128_t &frameID)
 Start a batch of tile rendering operations.
virtual void frameTilesFinish (const uint128_t &frameID)
 Finish a batch of tile rendering operations.
virtual void notifyViewportChanged ()
 Notification that parameters influencing the vp/pvp have changed.
virtual void notifyStopFrame (const uint32_t lastFrameNumber)
 Notify interruption of the rendering.
Actions
void startFrame (const uint32_t frameNumber)
 Start a frame by unlocking all child resources.
void releaseFrame (const uint32_t frameNumber)
 Signal the completion of a frame to the parent.
void releaseFrameLocal (const uint32_t frameNumber)
 Release the local synchronization of the parent for a frame.
virtual void setupAssemblyState ()
 Setup the OpenGL state for a readback or assemble operation.
virtual void resetAssemblyState ()
 Reset the OpenGL state after an assembly operation.
Task Methods

The task methods (callbacks) are called by Equalizer during rendering to execute various rendering tasks.

Each task method has a useful default implementation, but at least frameDraw() is implemented by an application.

virtual bool configInit (const uint128_t &initID)
 Initialize this channel.
virtual bool configExit ()
 Exit this channel.
virtual void frameStart (const uint128_t &frameID, const uint32_t frameNumber)
 Start rendering a frame.
virtual void frameFinish (const uint128_t &frameID, const uint32_t frameNumber)
 Finish rendering a frame.
virtual void frameDrawFinish (const uint128_t &frameID, const uint32_t frameNumber)
 Finish drawing.
virtual void frameClear (const uint128_t &frameID)
 Clear the frame buffer.
virtual void frameDraw (const uint128_t &frameID)
 Draw the scene.
virtual void frameAssemble (const uint128_t &frameID)
 Assemble all input frames.
virtual void frameReadback (const uint128_t &frameID)
 Read back the rendered frame buffer into the output frames.
virtual void frameViewStart (const uint128_t &frameID)
 Start updating a destination channel.
virtual void frameViewFinish (const uint128_t &frameID)
 Finish updating a destination channel.

Friends

class fabric::Window< Pipe, Window, Channel >

Detailed Description

A channel represents a two-dimensional viewport within a Window.

The channel is the basic rendering entity. It represents a 2D rendering area within a Window. It executes all rendering-relevant tasks, such as clear, draw, assemble and readback. Each rendering task is using its own RenderContext, which is computed by the server based on the rendering description of the current configuration.

See also:
fabric::Channel

Definition at line 49 of file include/eq/client/channel.h.


Constructor & Destructor Documentation

Construct a new channel.

Version:
1.0

Reimplemented in osgScaleViewer::Channel, eqPly::Channel, eVolve::Channel, eqAsync::Channel, eqNbody::Channel, and eqPixelBench::Channel.

virtual eq::Channel::~Channel ( ) [virtual]

Destruct the channel.

Version:
1.0

Reimplemented from eq::fabric::Channel< Window, Channel >.

Reimplemented in eqPly::Channel, eVolve::Channel, eqNbody::Channel, and eqPixelBench::Channel.


Member Function Documentation

virtual void eq::Channel::applyBuffer ( ) [virtual]
virtual void eq::Channel::applyColorMask ( ) const [virtual]

Apply the current color mask.

See also:
applyBuffer(), getDrawBufferMask()
Version:
1.0
virtual void eq::Channel::applyFrameBufferObject ( ) [virtual]

Apply the current alternate frame buffer.

Version:
1.0
virtual void eq::Channel::applyFrustum ( ) const [virtual]

Apply the frustum matrix for the current rendering task.

If a sub-pixel decomposition is defined, the frustum is jittered by the amount given by getJitter() to implement software anti-aliasing. Applications which want to implement a different multi-sampling algorithm, e.g., depth-of-field, have to re-implement getJitter() or applyFrustum() accordingly.

See also:
useOrtho(), getJitter(), getSubPixel()
Version:
1.0

Referenced by eqPixelBench::Channel::frameDraw(), and eVolve::Channel::frameDraw().

+ Here is the caller graph for this function:

virtual void eq::Channel::applyHeadTransform ( ) const [virtual]

Apply the transformation to position the view frustum.

Version:
1.0
See also:
useOrtho()

Referenced by eqPixelBench::Channel::frameDraw(), and eVolve::Channel::frameDraw().

+ Here is the caller graph for this function:

virtual void eq::Channel::applyOrtho ( ) const [virtual]

Apply the orthographic frustum matrix for the current rendering task.

Version:
1.0
virtual void eq::Channel::applyOrthoTransform ( ) const [virtual]

Apply the transformation to position the orthographic view frustum.

Version:
1.0
virtual void eq::Channel::applyPerspective ( ) const [virtual]

Apply the perspective frustum matrix for the current rendering task.

Version:
1.0
virtual void eq::Channel::applyPerspectiveTransform ( ) const [virtual]

Apply the transformation to position the perspective view frustum.

Version:
1.0

Apply an orthographic frustum for pixel-based 2D operations.

One unit of the frustum covers one pixel on screen. The frustum is positioned relative to the view.

Version:
1.0
virtual void eq::Channel::applyViewport ( ) const [virtual]

Rebind the current alternate FBO of the channel or window.

Version:
1.0
virtual bool eq::Channel::configExit ( ) [protected, virtual]

Exit this channel.

Version:
1.0

Reimplemented in eqPly::Channel, eVolve::Channel, and eqPixelBench::Channel.

virtual bool eq::Channel::configInit ( const uint128_t &  initID) [protected, virtual]

Initialize this channel.

Parameters:
initIDthe init identifier.
Version:
1.0

Reimplemented in eqPly::Channel, eVolve::Channel, and eqNbody::Channel.

Referenced by eqNbody::Channel::configInit(), eVolve::Channel::configInit(), and eqPly::Channel::configInit().

+ Here is the caller graph for this function:

virtual void eq::Channel::declareRegion ( const eq::PixelViewport &  region) [virtual]

Declare a region covered by the current draw or assemble operation.

The region is relative to the current pixel viewport. It is clipped against the current pixel viewport of the channel. Called with the full pixel viewport after frameDraw if no region has been declared. The implementation might merge or split the declared regions.

Version:
1.3
void eq::Channel::declareRegion ( const eq::Viewport &  vp)

Convenience method to declare a region in relative coordinates.

The given viewport is relative to the current pixel viewport.

Version:
1.3
virtual void eq::Channel::drawStatistics ( ) [virtual]

Draw a statistics overlay.

Version:
1.0

Referenced by eqPly::Channel::frameViewFinish(), and osgScaleViewer::Channel::frameViewFinish().

+ Here is the caller graph for this function:

virtual void eq::Channel::frameAssemble ( const uint128_t &  frameID) [protected, virtual]

Assemble all input frames.

Called 0 to n times during one frame.

Parameters:
frameIDthe per-frame identifier.
See also:
getInputFrames()
Version:
1.0

Reimplemented in eqPly::Channel, and eVolve::Channel.

virtual void eq::Channel::frameClear ( const uint128_t &  frameID) [protected, virtual]

Clear the frame buffer.

Called 0 to n times during one frame.

Parameters:
frameIDthe per-frame identifier.
Version:
1.0

Reimplemented in osgScaleViewer::Channel, eqPly::Channel, and eVolve::Channel.

virtual void eq::Channel::frameDraw ( const uint128_t &  frameID) [protected, virtual]

Draw the scene.

Called 0 to n times during one frame.

Parameters:
frameIDthe per-frame identifier.
Version:
1.0

Reimplemented in osgScaleViewer::Channel, eqPly::Channel, eVolve::Channel, eqNbody::Channel, eqAsync::Channel, and eqPixelBench::Channel.

virtual void eq::Channel::frameDrawFinish ( const uint128_t &  frameID,
const uint32_t  frameNumber 
) [protected, virtual]

Finish drawing.

Called once per frame after the last draw operation. Typically releases the local node thread synchronization for this frame.

Parameters:
frameIDthe per-frame identifier.
frameNumberthe frame to finished with draw.
Version:
1.0
virtual void eq::Channel::frameFinish ( const uint128_t &  frameID,
const uint32_t  frameNumber 
) [protected, virtual]

Finish rendering a frame.

Called once at the end of each frame, to do per-frame updates of channel-specific data. This method has to call releaseFrame().

Parameters:
frameIDthe per-frame identifier.
frameNumberthe frame to finish.
Version:
1.0

Reimplemented in eqPly::Channel.

virtual void eq::Channel::frameReadback ( const uint128_t &  frameID) [protected, virtual]

Read back the rendered frame buffer into the output frames.

Called 0 to n times during one frame.

Parameters:
frameIDthe per-frame identifier.
See also:
getOutputFrames()
Version:
1.0

Reimplemented in eqPly::Channel, and eVolve::Channel.

virtual void eq::Channel::frameStart ( const uint128_t &  frameID,
const uint32_t  frameNumber 
) [protected, virtual]

Start rendering a frame.

Called once at the beginning of each frame, to do per-frame updates of channel-specific data. This method has to call startFrame().

Parameters:
frameIDthe per-frame identifier.
frameNumberthe frame to start.
See also:
Config::startFrame()
Version:
1.0

Reimplemented in eqPly::Channel, eVolve::Channel, and eqPixelBench::Channel.

virtual void eq::Channel::frameTilesFinish ( const uint128_t &  frameID) [inline, protected, virtual]

Finish a batch of tile rendering operations.

Version:
1.1.6

Definition at line 549 of file include/eq/client/channel.h.

virtual void eq::Channel::frameTilesStart ( const uint128_t &  frameID) [inline, protected, virtual]

Start a batch of tile rendering operations.

Version:
1.1.6

Definition at line 546 of file include/eq/client/channel.h.

virtual void eq::Channel::frameViewFinish ( const uint128_t &  frameID) [protected, virtual]

Finish updating a destination channel.

Called once on each destination channel, e.g., channels which are defined by a view/segment intersection, before frameFinish to update a part of a view.

This is typically used to do operations on the output channel after it has been fully updated, e.g., to draw a 2D overlay.

Parameters:
frameIDthe per-frame identifier.
Version:
1.0

Reimplemented in eqPly::Channel, osgScaleViewer::Channel, and eVolve::Channel.

virtual void eq::Channel::frameViewStart ( const uint128_t &  frameID) [protected, virtual]

Start updating a destination channel.

Called once on each destination channel, e.g., channels which are defined by a view/segment intersection, after frameStart to update a part of a display.

Parameters:
frameIDthe per-frame identifier.
Version:
1.0

Reimplemented in eqPly::Channel.

Returns:
the parent config.
Version:
1.0

Referenced by eqNbody::Channel::configInit(), eqPixelBench::Channel::frameStart(), and eqPly::Channel::frameViewFinish().

+ Here is the caller graph for this function:

const Config* eq::Channel::getConfig ( ) const
Returns:
the parent config.
Version:
1.0
const DrawableConfig& eq::Channel::getDrawableConfig ( ) const
Returns:
the channel's drawable config.
Version:
1.0

Referenced by eqPixelBench::Channel::Channel(), and eVolve::Channel::frameAssemble().

+ Here is the caller graph for this function:

Returns:
the FBO used as an alternate frame buffer.
Version:
1.0
Returns:
the list of input frames, used from frameAssemble().
Version:
1.0

Referenced by eVolve::Channel::frameAssemble(), and eqPly::Channel::frameAssemble().

+ Here is the caller graph for this function:

virtual Vector2f eq::Channel::getJitter ( ) const [virtual]
Returns:
the jitter vector for the current subpixel decomposition.
Version:
1.0

Reimplemented in eqPly::Channel.

Referenced by eqPly::Channel::getJitter().

+ Here is the caller graph for this function:

Get the channel's native view.

This function always returns the channel's native view, no matter in which context it is called. Only destination channels have a native view.

Returns:
the channel's native view, or 0 if it does not have one.
See also:
getView()
Version:
1.0
const View* eq::Channel::getNativeView ( ) const

const-version of getNativeView()

Version:
1.0
Returns:
the parent node.
Version:
1.0
const Node* eq::Channel::getNode ( ) const
Returns:
the parent node.
Version:
1.0
Returns:
the window's object manager instance.
Version:
1.0

Referenced by eVolve::Channel::frameAssemble().

+ Here is the caller graph for this function:

Returns:
the list of output frames, used from frameReadback().
Version:
1.0

Referenced by eVolve::Channel::frameReadback(), and eqPly::Channel::frameReadback().

+ Here is the caller graph for this function:

const Pipe* eq::Channel::getPipe ( ) const
Returns:
the parent pipe.
Version:
1.0
PixelViewport eq::Channel::getRegion ( ) const
Returns:
a region covering all declared regions.
Version:
1.3

Get the current regions of interest.

The returned regions are guaranteed not to overlap with each other. Therefore they may differ in number and size from the declared regions. The actual algorithm to create the non-overlapping regions is unspecified and may change in the future.

Returns:
current regions of interest.
Version:
1.3

Referenced by eVolve::Channel::frameAssemble().

+ Here is the caller graph for this function:

Frustumf eq::Channel::getScreenFrustum ( ) const

Returns an orthographic frustum for 2D operations on the view.

One unit of the frustum covers one pixel on screen. The frustum is positioned relative to the view.

Returns:
the 2D orthographic frustum.
Version:
1.0
Returns:
the parent server.
Version:
1.0
const Vector3ub& eq::Channel::getUniqueColor ( ) const
Returns:
a fixed unique color for this channel.
Version:
1.0

Referenced by eqPly::Channel::frameClear(), eVolve::Channel::frameDraw(), eqPly::Channel::frameDraw(), and eVolve::Channel::frameStart().

+ Here is the caller graph for this function:

Get the channel's current View.

During a frame task method, i.e., in one of the frameFoo functions, the view is set to the view of the destination channel, that is, the channel for which this channel is executing the rendering task. Outside of a frame task method the native view of the channel, or 0, is returned.

Returns:
the channel's view, or 0 if it does not have a view.
See also:
getNativeView()
Version:
1.0

Referenced by eqPly::Channel::frameClear(), eqPly::Channel::frameViewFinish(), and eqPly::Channel::getJitter().

+ Here is the caller graph for this function:

const View* eq::Channel::getView ( ) const

Const version of getView().

Version:
1.0
const GLEWContext* eq::Channel::glewGetContext ( ) const

Get the GLEW context for this channel.

The GLEW context is initialized during window initialization, and provides access to OpenGL extensions. This function does not follow the Equalizer naming conventions, since GLEW uses a function of this name to automatically resolve OpenGL function entry points. Therefore, any supported GL function can be called directly from an initialized Channel.

Returns:
the extended OpenGL function table for the channel's OpenGL context.
Version:
1.0

Referenced by eqNbody::Channel::Channel().

+ Here is the caller graph for this function:

bool eq::Channel::isStopped ( ) const
Returns:
true if this channel is stopped, false otherwise.
Version:
1.0
virtual void eq::Channel::notifyStopFrame ( const uint32_t  lastFrameNumber) [inline, protected, virtual]

Notify interruption of the rendering.

This method is called from the Client command thread, as opposed to the rendering thread. Its purpose is to cause the rendering thread to stop its operations as soon as possible. Normal rendering shall recommence after the given frame.

Parameters:
lastFrameNumberstop rendering until this frame has been processed.
Version:
1.0

Reimplemented in eqPly::Channel.

Definition at line 566 of file include/eq/client/channel.h.

virtual void eq::Channel::notifyViewportChanged ( ) [protected, virtual]

Notification that parameters influencing the vp/pvp have changed.

Reimplemented from eq::fabric::Channel< Window, Channel >.

virtual void eq::Channel::outlineViewport ( ) [virtual]

Outline the current pixel viewport.

Version:
1.0

Referenced by eqNbody::Channel::frameDraw(), and eVolve::Channel::frameDraw().

+ Here is the caller graph for this function:

virtual bool eq::Channel::processEvent ( const Event event) [virtual]

Process a received event.

The task of this method is to update the channel as necessary, and transform the event into an config event to be send to the application using Config::sendEvent().

Parameters:
eventthe received event.
Returns:
true when the event was handled, false if not.
Version:
1.0
void eq::Channel::releaseFrame ( const uint32_t  frameNumber) [protected]

Signal the completion of a frame to the parent.

Parameters:
frameNumberthe frame to end.
Version:
1.0
void eq::Channel::releaseFrameLocal ( const uint32_t  frameNumber) [protected]

Release the local synchronization of the parent for a frame.

Parameters:
frameNumberthe frame to release.
Version:
1.0
virtual void eq::Channel::resetAssemblyState ( ) [protected, virtual]

Reset the OpenGL state after an assembly operation.

Version:
1.0

Referenced by eVolve::Channel::frameAssemble(), eqPly::Channel::frameAssemble(), eqPixelBench::Channel::frameDraw(), and eqPly::Channel::frameViewFinish().

+ Here is the caller graph for this function:

virtual void eq::Channel::resetRegions ( ) [virtual]

Reset the declared regions of interest.

Called from frameStart and frameClear to reset the area to be used to optimize compositing and load balancing for each frame.

Version:
1.3

Referenced by eqPly::Channel::frameClear().

+ Here is the caller graph for this function:

virtual void eq::Channel::setupAssemblyState ( ) [protected, virtual]

Setup the OpenGL state for a readback or assemble operation.

The default implementation is very conservative and saves any state which is potentially changed by the assembly routines. Applications may overwrite this and resetAssemblyState() to optimize performance in accordance with their rendering code.

Version:
1.0

Referenced by eqPly::Channel::frameAssemble(), eqPixelBench::Channel::frameDraw(), and eqPly::Channel::frameViewFinish().

+ Here is the caller graph for this function:

void eq::Channel::startFrame ( const uint32_t  frameNumber) [protected]

Start a frame by unlocking all child resources.

Parameters:
frameNumberthe frame to start.
Version:
1.0

The documentation for this class was generated from the following file:
Generated on Mon Nov 26 2012 14:41:50 for Equalizer 1.4.1 by  doxygen 1.7.6.1