#include <window.h>


Classes | |
| struct | DrawableConfig |
| Stores current drawable characteristics. More... | |
| class | ObjectManager |
| The per-window object manager. More... | |
Public Member Functions | |
| Window (Pipe *parent) | |
| Constructs a new window. | |
| virtual | ~Window () |
| Destructs the window. | |
| double | getFPS () const |
| Returns averaged FPS count (averaging is not longer than 2 sec). | |
| virtual void | drawFPS () const |
| int | getColorType () |
| bool | isFBOWindow () |
Data Access | |
| net::CommandQueue * | getPipeThreadQueue () |
| const Pipe * | getPipe () const |
| Pipe * | getPipe () |
| const Node * | getNode () const |
| Node * | getNode () |
| const Config * | getConfig () const |
| Config * | getConfig () |
| ClientPtr | getClient () |
| ServerPtr | getServer () |
| const ChannelVector & | getChannels () |
| const std::string & | getName () const |
| bool | isRunning () const |
| uint32_t | getTasks () const |
| Return the set of tasks this window's channels might execute in the worst case. | |
| VisitorResult | accept (WindowVisitor &visitor) |
| Traverse this window and all children using a window visitor. | |
| void | setSharedContextWindow (Window *sharedContextWindow) |
| Set the window with which this window shares the OpenGL context, defaults to the first window of the pipe. | |
| const Window * | getSharedContextWindow () const |
| Window * | getSharedContextWindow () |
| GLEWContext * | glewGetContext () |
| Get the GLEW context for this window. | |
| WGLEWContext * | wglewGetContext () |
| const DrawableConfig & | getDrawableConfig () const |
| ObjectManager * | getObjectManager () |
| const ObjectManager * | getObjectManager () const |
| void | setPixelViewport (const PixelViewport &pvp) |
| Set the window's pixel viewport wrt its parent pipe. | |
| const PixelViewport & | getPixelViewport () const |
| const Viewport & | getViewport () const |
| void | addRenderContext (const RenderContext &context) |
| Add a channel's rendering context to the current frame's list. | |
| bool | getRenderContext (const int32_t x, const int32_t y, RenderContext &context) const |
| Get the last rendering context at the x, y position. | |
Actions | |
| virtual void | flush () const |
| Flush outstanding rendering requests. | |
| virtual void | finish () const |
| Finish outstanding rendering requests. | |
Interface to and from the OSWindow, the window-system specific | |
| void | setOSWindow (OSWindow *window) |
| Set the OS-specific window. | |
| const OSWindow * | getOSWindow () const |
| OSWindow * | getOSWindow () |
Error information. | |
| void | setErrorMessage (const std::string &message) |
| Set a message why the last operation failed. | |
Callbacks | |
The callbacks are called by Equalizer during rendering to execute various actions. | |
| virtual bool | processEvent (const Event &event) |
| Process a received event. | |
Protected Member Functions | |
| virtual void | attachToSession (const uint32_t id, const uint32_t instanceID, net::Session *session) |
| Called when object is attached to session. | |
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. | |
Callbacks | |
The callbacks are called by Equalizer during rendering to execute various actions. | |
| virtual bool | configInit (const uint32_t initID) |
| Initialize this window. | |
| virtual bool | configInitOSWindow (const uint32_t initID) |
| Initialize the OS-specific window. | |
| virtual bool | configInitGL (const uint32_t initID) |
| Initialize the OpenGL state for this window. | |
| virtual bool | configExit () |
| Exit this window. | |
| virtual bool | configExitOSWindow () |
| De-initialize the OS-specific window. | |
| virtual bool | configExitGL () |
| De-initializer the OpenGL state for this window. | |
| virtual void | frameStart (const uint32_t frameID, const uint32_t frameNumber) |
| Start rendering a frame. | |
| virtual void | frameFinish (const uint32_t frameID, const uint32_t frameNumber) |
| Finish rendering a frame. | |
| virtual void | frameDrawFinish (const uint32_t frameID, const uint32_t frameNumber) |
| Finish drawing. | |
| virtual void | makeCurrent (const bool cache=true) const |
| Make the window's drawable and context current. | |
| virtual void | bindFrameBuffer () const |
| Bind the window's FBO, if it uses one. | |
| virtual void | swapBuffers () |
| Swap the front and back buffer of the window. | |
Friends | |
| class | Pipe |
| class | Channel |
Attributes | |
| enum | IAttribute { IATTR_HINT_STEREO, IATTR_HINT_DOUBLEBUFFER, IATTR_HINT_FULLSCREEN, IATTR_HINT_DECORATION, IATTR_HINT_SWAPSYNC, IATTR_HINT_DRAWABLE, IATTR_HINT_STATISTICS, IATTR_HINT_SCREENSAVER, IATTR_PLANES_COLOR, IATTR_PLANES_ALPHA, IATTR_PLANES_DEPTH, IATTR_PLANES_STENCIL, IATTR_PLANES_ACCUM, IATTR_PLANES_ACCUM_ALPHA, IATTR_PLANES_SAMPLES, IATTR_FILL1, IATTR_FILL2, IATTR_ALL } |
| Window (visual) attributes, used during configInit(). More... | |
| void | setIAttribute (const IAttribute attr, const int32_t value) |
| int32_t | getIAttribute (const IAttribute attr) const |
| static const std::string & | getIAttributeString (const IAttribute attr) |
A Window is a child of a Pipe. The task methods for all windows of a pipe are executed sequentially in the same thread, in the order they are stored on the Pipe.
The default window initialization methods do initialize all windows of the same Pipe with a shared context, so that OpenGL objects can be reused between them for optimal GPU memory usage. Please note that each window might have it's own OpenGL command buffer, thus glFlush is needed to synchronize the state of OpenGL objects between windows. Therefore, Equalizer calls flush() at the end of each frame for each window.
Definition at line 51 of file lib/client/window.h.
Window (visual) attributes, used during configInit().
| IATTR_HINT_STEREO | Active Stereo. |
| IATTR_HINT_DOUBLEBUFFER | Front and back buffer. |
| IATTR_HINT_FULLSCREEN | Fullscreen drawable. |
| IATTR_HINT_DECORATION | Window decorations. |
| IATTR_HINT_SWAPSYNC | Swap sync on vertical retrace. |
| IATTR_HINT_DRAWABLE | Drawable type. |
| IATTR_HINT_STATISTICS | Statistics gathering hint. |
| IATTR_HINT_SCREENSAVER | Screensaver (de)activation (WGL). |
| IATTR_PLANES_COLOR | No of per-component color planes. |
| IATTR_PLANES_ALPHA | No of alpha planes. |
| IATTR_PLANES_DEPTH | No of z-buffer planes. |
| IATTR_PLANES_STENCIL | No of stencil planes. |
| IATTR_PLANES_ACCUM | No of accumulation buffer planes. |
| IATTR_PLANES_ACCUM_ALPHA | No of alpha accum buffer planes. |
| IATTR_PLANES_SAMPLES | No of multisample (AA) planes. |
Definition at line 218 of file lib/client/window.h.
| eq::Window::Window | ( | Pipe * | parent | ) |
Constructs a new window.
Reimplemented in eqPly::Window.
Definition at line 82 of file lib/client/window.cpp.
References eq::Pipe::_addWindow(), and EQINFO.

| eq::Window::~Window | ( | ) | [virtual] |
Destructs the window.
Reimplemented in eqPly::Window.
Definition at line 97 of file lib/client/window.cpp.
References eq::Pipe::_removeWindow(), eq::Pipe::isCurrent(), and eq::Pipe::setCurrent().

| const Pipe* eq::Window::getPipe | ( | ) | const [inline] |
Definition at line 105 of file lib/client/window.h.
Referenced by configInitOSWindow(), eqPly::Window::frameStart(), and eqPly::Window::swapBuffers().

| uint32_t eq::Window::getTasks | ( | ) | const [inline] |
Return the set of tasks this window's channels might execute in the worst case.
It is not guaranteed that all the tasks will be actually executed during rendering.
Definition at line 133 of file lib/client/window.h.
| VisitorResult eq::Window::accept | ( | WindowVisitor & | visitor | ) |
Traverse this window and all children using a window visitor.
| visitor | the visitor. |
Definition at line 276 of file lib/client/window.cpp.
References eq::Channel::accept(), eq::TRAVERSE_CONTINUE, eq::TRAVERSE_PRUNE, eq::TRAVERSE_TERMINATE, eq::WindowVisitor::visitPost(), and eq::WindowVisitor::visitPre().
Referenced by eq::Pipe::accept().


| const Window* eq::Window::getSharedContextWindow | ( | ) | const [inline] |
Definition at line 151 of file lib/client/window.h.
Referenced by eq::AGLWindow::createAGLContext(), eq::GLXWindow::createGLXContext(), and eq::WGLWindow::createWGLContext().

| Window* eq::Window::getSharedContextWindow | ( | ) | [inline] |
Definition at line 155 of file lib/client/window.h.
| GLEWContext * eq::Window::glewGetContext | ( | ) |
Get the GLEW context for this window.
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 Window.
Definition at line 662 of file lib/client/window.cpp.
References eq::OSWindow::glewGetContext().
Referenced by eq::Channel::glewGetContext().


| WGLEWContext * eq::Window::wglewGetContext | ( | ) |
Definition at line 270 of file lib/client/window.cpp.
References eq::Pipe::wglewGetContext().
Referenced by eq::OSWindow::wglewGetContext().


| const DrawableConfig& eq::Window::getDrawableConfig | ( | ) | const [inline] |
Definition at line 178 of file lib/client/window.h.
Referenced by getRenderContext().

| ObjectManager* eq::Window::getObjectManager | ( | ) | [inline] |
Definition at line 182 of file lib/client/window.h.
Referenced by eqPly::Window::configInitGL().

| void eq::Window::setPixelViewport | ( | const PixelViewport & | pvp | ) |
Set the window's pixel viewport wrt its parent pipe.
Updates the fractional viewport accordingly.
| pvp | the viewport in pixels. |
Definition at line 325 of file lib/client/window.cpp.
References eq::base::RefPtr< T >::get(), and eq::net::Object::send().
Referenced by eq::AGLWindow::configInitAGLFullscreen(), eq::GLXWindow::configInitGLXWindow(), processEvent(), eq::AGLWindow::setAGLPBuffer(), eq::AGLWindow::setCarbonWindow(), eq::WGLWindow::setWGLPBufferHandle(), eq::WGLWindow::setWGLWindowHandle(), and eq::GLXWindow::setXDrawable().


| const PixelViewport& eq::Window::getPixelViewport | ( | ) | const [inline] |
Definition at line 197 of file lib/client/window.h.
Referenced by eq::AGLWindow::configInitAGLFullscreen(), eq::AGLWindow::configInitAGLPBuffer(), eq::AGLWindow::configInitAGLWindow(), eq::OSWindow::configInitFBO(), eq::GLXWindow::configInitGLXPBuffer(), eq::GLXWindow::configInitGLXWindow(), eq::WGLWindow::configInitWGLPBuffer(), eq::WGLWindow::configInitWGLWindow(), eq::Channel::drawStatistics(), and eq::Channel::setupAssemblyState().

| const Viewport& eq::Window::getViewport | ( | ) | const [inline] |
| bool eq::Window::getRenderContext | ( | const int32_t | x, | |
| const int32_t | y, | |||
| RenderContext & | context | |||
| ) | const |
Get the last rendering context at the x, y position.
Definition at line 387 of file lib/client/window.cpp.
References eq::Window::Window::DrawableConfig::doublebuffered, getDrawableConfig(), eq::PixelViewport::h, eq::PixelViewport::isPointInside(), and eq::RenderContext::pvp.
Referenced by eq::EventHandler::_getRenderContext().


| virtual void eq::Window::flush | ( | ) | const [inline, virtual] |
Flush outstanding rendering requests.
Definition at line 250 of file lib/client/window.h.
Referenced by frameFinish().

| virtual void eq::Window::finish | ( | ) | const [inline, virtual] |
| void eq::Window::setOSWindow | ( | OSWindow * | window | ) |
Set the OS-specific window.
The OS-specific window implements the window-system-dependent part, e.g., the drawable creation. This window forwards certain calls, e.g., swapBuffers() to the OS window. The os-specific window has to be initialized.
Definition at line 431 of file lib/client/window.cpp.
References eq::OSWindow::exitGLEW(), eq::OSWindow::initGLEW(), and makeCurrent().
Referenced by configInitOSWindow().


| void eq::Window::setErrorMessage | ( | const std::string & | message | ) |
Set a message why the last operation failed.
The message will be transmitted to the originator of the request, for example to Config::init when set from within the configInit method.
| message | the error message. |
Definition at line 677 of file lib/client/window.cpp.
Referenced by eq::AGLWindow::chooseAGLPixelFormat(), eq::WGLWindow::chooseWGLPixelFormat(), eq::GLXWindow::chooseXVisualInfo(), configInit(), eq::WGLWindow::configInit(), eq::GLXWindow::configInit(), eq::AGLWindow::configInitAGLFullscreen(), eq::AGLWindow::configInitAGLPBuffer(), eq::AGLWindow::configInitAGLWindow(), eq::OSWindow::configInitFBO(), eq::GLXWindow::configInitGLXPBuffer(), eq::GLXWindow::configInitGLXWindow(), eq::WGLWindow::configInitWGLFBO(), eq::WGLWindow::configInitWGLPBuffer(), eq::WGLWindow::configInitWGLWindow(), eq::AGLWindow::createAGLContext(), eq::GLXWindow::createGLXContext(), eq::WGLWindow::createWGLContext(), and eq::OSWindow::initGLEW().

| bool eq::Window::processEvent | ( | const Event & | event | ) | [virtual] |
Process a received event.
The task of this method is to update the window as necessary, and transform the event into an config event to be send to the application using Config::sendEvent().
| event | the received window system event. |
Definition at line 685 of file lib/client/window.cpp.
References eq::ConfigEvent::data, eq::Window::Window::DrawableConfig::doublebuffered, EQWARN, eq::ResizeEvent::h, IATTR_HINT_DRAWABLE, IATTR_HINT_SCREENSAVER, eq::KeyEvent::key, eq::Event::key, eq::Event::KEY_PRESS, eq::Event::KEY_RELEASE, eq::OFF, eq::ON, eq::Event::POINTER_BUTTON_PRESS, eq::Event::POINTER_BUTTON_RELEASE, eq::Event::POINTER_MOTION, eq::Event::resize, eq::Config::sendEvent(), setPixelViewport(), eq::Event::STATISTIC, eq::Event::type, eq::ResizeEvent::w, eq::WINDOW, eq::Event::WINDOW_CLOSE, eq::Event::WINDOW_EXPOSE, eq::Event::WINDOW_HIDE, eq::Event::WINDOW_RESIZE, eq::Event::WINDOW_SCREENSAVER, eq::Event::WINDOW_SHOW, eq::ResizeEvent::x, and eq::ResizeEvent::y.
Referenced by eq::AGLWindowIF::processEvent().


| int eq::Window::getColorType | ( | ) |
Definition at line 652 of file lib/client/window.cpp.
References IATTR_PLANES_COLOR, eq::RGBA16F, and eq::RGBA32F.
Referenced by eq::OSWindow::configInitFBO(), and eq::Channel::frameReadback().

| bool eq::Window::isFBOWindow | ( | ) |
Definition at line 641 of file lib/client/window.cpp.
References eq::OSWindow::getFBO().
Referenced by eq::Channel::applyBuffer().


| void eq::Window::attachToSession | ( | const uint32_t | id, | |
| const uint32_t | instanceID, | |||
| net::Session * | session | |||
| ) | [protected, virtual] |
Called when object is attached to session.
For internal use only.
Reimplemented from eq::net::Object.
Definition at line 108 of file lib/client/window.cpp.
References eq::Pipe::getPipeThreadQueue(), and eq::net::Dispatcher::registerCommand().

| void eq::Window::startFrame | ( | const uint32_t | frameNumber | ) | [inline, protected] |
Start a frame by unlocking all child resources.
| frameNumber | the frame to start. |
Definition at line 336 of file lib/client/window.h.
Referenced by frameStart().

| void eq::Window::releaseFrame | ( | const uint32_t | frameNumber | ) | [inline, protected] |
Signal the completion of a frame to the parent.
| frameNumber | the frame to end. |
Definition at line 343 of file lib/client/window.h.
Referenced by frameFinish().

| void eq::Window::releaseFrameLocal | ( | const uint32_t | frameNumber | ) | [inline, protected] |
Release the local synchronization of the parent for a frame.
| frameNumber | the frame to release. |
Definition at line 350 of file lib/client/window.h.
Referenced by frameDrawFinish().

| bool eq::Window::configInit | ( | const uint32_t | initID | ) | [protected, virtual] |
Initialize this window.
| initID | the init identifier. |
Definition at line 458 of file lib/client/window.cpp.
References configInitGL(), configInitOSWindow(), eq::PixelViewport::isValid(), and setErrorMessage().

| bool eq::Window::configInitOSWindow | ( | const uint32_t | initID | ) | [protected, virtual] |
Initialize the OS-specific window.
Definition at line 475 of file lib/client/window.cpp.
References eq::OSWindow::configInit(), EQERROR, EQINFO, EQWARN, getPipe(), eq::Pipe::getWindowSystem(), setOSWindow(), eq::WINDOW_SYSTEM_AGL, eq::WINDOW_SYSTEM_GLX, and eq::WINDOW_SYSTEM_WGL.
Referenced by configInit().


| bool eq::Window::configInitGL | ( | const uint32_t | initID | ) | [protected, virtual] |
Initialize the OpenGL state for this window.
| initID | the init identifier. |
true if the initialization was successful, false if not. Reimplemented in eqPly::Window.
Definition at line 578 of file lib/client/window.cpp.
References swapBuffers().
Referenced by configInit(), and eqPly::Window::configInitGL().


| bool eq::Window::configExit | ( | ) | [protected, virtual] |
Exit this window.
Definition at line 603 of file lib/client/window.cpp.
References configExitGL(), and configExitOSWindow().

| bool eq::Window::configExitOSWindow | ( | ) | [protected, virtual] |
De-initialize the OS-specific window.
Definition at line 609 of file lib/client/window.cpp.
References eq::OSWindow::configExit(), eq::Pipe::isCurrent(), and eq::Pipe::setCurrent().
Referenced by configExit().


| virtual bool eq::Window::configExitGL | ( | ) | [inline, protected, virtual] |
De-initializer the OpenGL state for this window.
Reimplemented in eqPly::Window.
Definition at line 391 of file lib/client/window.h.
Referenced by configExit().

| virtual void eq::Window::frameStart | ( | const uint32_t | frameID, | |
| const uint32_t | frameNumber | |||
| ) | [inline, protected, virtual] |
Start rendering a frame.
Called once at the beginning of each frame, to do per-frame updates of window-specific data. This method has to call startFrame().
| frameID | the per-frame identifier. | |
| frameNumber | the frame to start. |
Reimplemented in eqPly::Window.
Definition at line 403 of file lib/client/window.h.
References startFrame().

| void eq::Window::frameFinish | ( | const uint32_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 window-specific data. This method has to call releaseFrame(). The default implementation also flushes all rendering commands. This light-weight call ensures that all outstanding rendering commands for the window's context are being executed in a timely fashion.
| frameID | the per-frame identifier. | |
| frameNumber | the frame to finish. |
Definition at line 448 of file lib/client/window.cpp.
References flush(), and releaseFrame().

| virtual void eq::Window::frameDrawFinish | ( | const uint32_t | frameID, | |
| const uint32_t | frameNumber | |||
| ) | [inline, protected, virtual] |
Finish drawing.
Called once per frame after the last draw operation. Typically releases the local node thread synchronization for this frame.
| frameID | the per-frame identifier. | |
| frameNumber | the frame to finished with draw. |
Definition at line 431 of file lib/client/window.h.
References releaseFrameLocal().

| void eq::Window::makeCurrent | ( | const bool | cache = true |
) | const [protected, virtual] |
Make the window's drawable and context current.
GL drivers tend to be behave sub-optimally if two many makeCurrent calls happen in a multi-threaded program. When caching is enabled, this method will only call OSWindow::makeCurrent if it has not been done before for this window.
Definition at line 627 of file lib/client/window.cpp.
References eq::Pipe::isCurrent(), and eq::OSWindow::makeCurrent().
Referenced by setOSWindow().


| void eq::Window::bindFrameBuffer | ( | ) | const [protected, virtual] |
Bind the window's FBO, if it uses one.
Definition at line 636 of file lib/client/window.cpp.
References eq::OSWindow::bindFrameBuffer().
Referenced by eq::Channel::bindFrameBuffer().


| void eq::Window::swapBuffers | ( | ) | [protected, virtual] |
Swap the front and back buffer of the window.
Reimplemented in eqPly::Window.
Definition at line 646 of file lib/client/window.cpp.
References EQVERB, and eq::OSWindow::swapBuffers().
Referenced by configInitGL().


0.9 by
1.5.8