BALL::VIEW::GLOffscreenTarget Class Reference

#include <BALL/VIEW/RENDERING/glOffscreenTarget.h>

Inheritance diagram for BALL::VIEW::GLOffscreenTarget:
BALL::VIEW::RenderWindow< taPixelDatatype > QPaintDevice BALL::VIEW::RenderTarget

List of all members.


Public Member Functions

 GLOffscreenTarget (GLRenderWindow *share_from, const String &filename)
virtual void prepareRendering ()
virtual void prepareUpscaling (Size final_width, Size final_height)
virtual bool resize (const unsigned int width, const unsigned int height)
virtual void refresh ()
void tryUsePixelBuffer (bool use_pbo=true)
QImage getImage ()
void updateImageTile (Size x_lower, Size y_lower, Size x_upper, Size y_upper)
virtual QPaintEngine * paintEngine () const
virtual int metric (PaintDeviceMetric metric) const

Protected Attributes

String filename_
GLRenderWindowshare_from_
boost::shared_ptr< QGLPixelBuffer > pixel_buffer_
bool use_pixel_buffer_
QImage current_image_

Detailed Description

Model of the RenderWindow which uses OpenGL to render its buffer into a file.

The class will try to use a pixel buffer target if this is available. If the OpenGL driver has no support for PixelBufferObjects, we try to render into a window on screen instead.


Constructor & Destructor Documentation

BALL::VIEW::GLOffscreenTarget::GLOffscreenTarget ( GLRenderWindow share_from,
const String filename 
)

Create a new GLOffscreenTarget with context shared from an existing GLRenderWindow.


Member Function Documentation

QImage BALL::VIEW::GLOffscreenTarget::getImage (  ) 
virtual int BALL::VIEW::GLOffscreenTarget::metric ( PaintDeviceMetric  metric  )  const [virtual]
virtual QPaintEngine* BALL::VIEW::GLOffscreenTarget::paintEngine (  )  const [virtual]
virtual void BALL::VIEW::GLOffscreenTarget::prepareRendering (  )  [virtual]
virtual void BALL::VIEW::GLOffscreenTarget::prepareUpscaling ( Size  final_width,
Size  final_height 
) [virtual]
virtual void BALL::VIEW::GLOffscreenTarget::refresh (  )  [virtual]

Request that the image is actually displayed on the screen or other device the window encapsulated. You should implement this method in subclass. This is different from RenderTarget releaseBuffer. ReleaseBuffer only informs the window that a buffer is ready, but does not imply the buffer is actually displayed somewhere. This is done by refresh. On the other hand, refresh called inbetween getBuffer and releaseBuffer has no effect.

Reimplemented from BALL::VIEW::RenderWindow< taPixelDatatype >.

virtual bool BALL::VIEW::GLOffscreenTarget::resize ( const unsigned int  width,
const unsigned int  height 
) [virtual]

Request new window size. Returns false if such a size cannot be supplied This call must be made before the window buffer is handed out to be rendered. This precondition is being checked automatically, see getBuffer

Reimplemented from BALL::VIEW::RenderWindow< taPixelDatatype >.

void BALL::VIEW::GLOffscreenTarget::tryUsePixelBuffer ( bool  use_pbo = true  ) 
void BALL::VIEW::GLOffscreenTarget::updateImageTile ( Size  x_lower,
Size  y_lower,
Size  x_upper,
Size  y_upper 
)

Member Data Documentation

boost::shared_ptr<QGLPixelBuffer> BALL::VIEW::GLOffscreenTarget::pixel_buffer_ [protected]