BALL  1.4.79
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
BALL::VIEW::BufferedRenderer Class Referenceabstract

#include <BALL/VIEW/RENDERING/RENDERERS/bufferedRenderer.h>

Inheritance diagram for BALL::VIEW::BufferedRenderer:
BALL::VIEW::Renderer BALL::VIEW::RaytracingRenderer BALL::VIEW::CudaVolumeRenderer BALL::VIEW::RTfactRenderer

Public Member Functions

 BufferedRenderer ()
 
bool setFrameBufferFormat (const FrameBufferFormat &format)
 
void renderToBuffer (RenderTarget *renderTarget, const Stage &stage)
 
virtual bool supports (const PixelFormat &format) const =0
 
virtual Resolution getSupportedResolution (const Resolution &min, const Resolution &max, const PixelFormat &format) const =0
 
virtual void setOffset (Size offset)
 
virtual void setStride (Size stride)
 
- Public Member Functions inherited from BALL::VIEW::Renderer
 Renderer ()
 
 Renderer (const Renderer &renderer)
 
virtual ~Renderer ()
 
virtual void clear ()
 
virtual bool init (Scene &scene)
 
virtual bool init (const Stage &stage, float height, float width)
 
virtual void setLights (bool reset_all=false)
 Set the light sources according to the stage. More...
 
virtual void updateCamera (const Camera *camera=0)
 
virtual void updateMaterialForRepresentation (Representation const *)
 
virtual void updateBackgroundColor ()
 Update the background color from the stage. More...
 
virtual void setupEnvironmentMap (const QImage &image)
 Setup an environment map. More...
 
virtual void setupStereo (float eye_separation, float focal_length)
 
virtual void useContinuousLoop (bool use_loop)
 
bool isContinuous ()
 
virtual bool hasFPScounter ()
 
virtual double getFPS ()
 
virtual bool finish ()
 
virtual Vector3 mapViewportTo3D (Position x, Position y)
 
virtual Vector2 map3DToViewport (const Vector3 &vec)
 
virtual void pickObjects (Position x1, Position y1, Position x2, Position y2, std::list< GeometricObject * > &objects)
 
virtual void getFrustum (float &near_f, float &far_f, float &left_f, float &right_f, float &top_f, float &bottom_f)
 
virtual bool renderOneRepresentation (const Representation &representation)
 
virtual void bufferRepresentation (const Representation &)
 
virtual void removeRepresentation (const Representation &)
 
virtual const StagegetStage () const
 
virtual void setStage (const Stage &stage)
 
bool hasStage () const
 Test if a Stage was assigned to the Renderer. More...
 
virtual void setSize (float width, float height)
 Set the size of the display. More...
 
virtual float getWidth () const
 
virtual float getHeight () const
 
virtual void setPreviewMode (bool show_preview)
 
virtual void showLightSources (bool show_light_sources)
 
virtual void renderRuler ()
 
virtual void setStereoMode (StereoMode state)
 
virtual StereoMode getStereoMode () const
 
virtual void setStereoFrustumConversion (int width_factor, int height_factor)
 
bool operator== (const Renderer &) const
 
virtual void render_ (const GeometricObject *object)
 Wrapper for the renderering of special GeometricObjects. More...
 

Protected Member Functions

virtual bool supports (const FrameBufferFormat &format) const =0
 
virtual void formatUpdated ()=0
 
virtual void prepareBufferedRendering (const Stage &stage)=0
 
virtual void renderToBufferImpl (FrameBufferPtr buffer)=0
 
const FrameBufferFormatgetFrameBufferFormat () const
 
- Protected Member Functions inherited from BALL::VIEW::Renderer
virtual void renderClippingPlane_ (const ClippingPlane &)
 
virtual void renderLabel_ (const Label &)
 
virtual void renderLine_ (const Line &)
 Render a line. More...
 
virtual void renderMultiLine_ (const MultiLine &)
 Render an illuminated line. More...
 
virtual void renderMesh_ (const Mesh &)
 Render a surface mesh. More...
 
virtual void renderPoint_ (const Point &)
 Render a single point. More...
 
virtual void renderBox_ (const Box &)
 Render a box. More...
 
virtual void renderSimpleBox_ (const SimpleBox &)
 Render a simple box (parallel to the axes) More...
 
virtual void renderSphere_ (const Sphere &)
 Render a sphere. More...
 
virtual void renderDisc_ (const Disc &)
 Render a disc. More...
 
virtual void renderTube_ (const Tube &)
 Render a tube. More...
 
virtual void renderTwoColoredLine_ (const TwoColoredLine &)
 Render a line with two colors. More...
 
virtual void renderTwoColoredTube_ (const TwoColoredTube &)
 Render a tube with two colors. More...
 
virtual void renderGridVisualisation_ (const GridVisualisation &)
 Render a grid. More...
 
virtual void renderQuadMesh_ (const QuadMesh &)
 Render a quad mesh. More...
 

Protected Attributes

Size offset_
 
Size stride_
 
- Protected Attributes inherited from BALL::VIEW::Renderer
Scenescene_
 
const Stagestage_
 
float width_
 
float height_
 
bool show_preview_
 
float volume_width_
 
bool show_light_sources_
 
Camera camera_
 
Vector3 camera_offset_
 
bool use_continuous_loop_
 
Size stereo_frustum_conversion_width_
 
Size stereo_frustum_conversion_height_
 
StereoMode stereo_
 

Additional Inherited Members

- Public Types inherited from BALL::VIEW::Renderer
enum  StereoMode {
  NO_STEREO = 0, ACTIVE_STEREO, DUAL_VIEW_STEREO, DUAL_VIEW_DIFFERENT_DISPLAY_STEREO,
  TOP_BOTTOM_STEREO, INTERLACED_STEREO
}
 

Detailed Description

Interface for Buffered Rendering. BufferedRenderers don't create their own window. Instead, they render the scene to a FrameBuffer which is provided by a RenderTarget. The FrameBuffer contains a pointer to a memory area where the results will be stored, as well as the pixel format and the resolution. Before rendering can start, you have to choose an output format using the setFrameBufferFormat() function. After that, you can call renderToBuffer(), as long as the format of the RenderTarget is the same that you set before.

Definition at line 29 of file bufferedRenderer.h.

Constructor & Destructor Documentation

BALL::VIEW::BufferedRenderer::BufferedRenderer ( )
inline

Definition at line 34 of file bufferedRenderer.h.

Member Function Documentation

virtual void BALL::VIEW::BufferedRenderer::formatUpdated ( )
protectedpure virtual

This is called once the FrameBufferFormat has been set so the renderer can perform any initialization steps that are needed.

Implemented in BALL::VIEW::RTfactRenderer, and BALL::VIEW::CudaVolumeRenderer.

const FrameBufferFormat& BALL::VIEW::BufferedRenderer::getFrameBufferFormat ( ) const
inlineprotected

Returns the current FrameBufferFormat.

Definition at line 125 of file bufferedRenderer.h.

virtual Resolution BALL::VIEW::BufferedRenderer::getSupportedResolution ( const Resolution min,
const Resolution max,
const PixelFormat format 
) const
pure virtual

Returns a supported resolution within the given limits. The x resolution will be between min.x and max.x and the y resolution will be between min.y and max.y. The returned resolution must be supported by the renderer with the requested PixelFormat.

Exceptions
Exception::FormatUnsupportedif the FrameBufferFormat is not supported by the renderer

Implemented in BALL::VIEW::RaytracingRenderer.

virtual void BALL::VIEW::BufferedRenderer::prepareBufferedRendering ( const Stage stage)
protectedpure virtual

Prepare for the rendering, taking into account settings in Stage, eg. Camera, Lights, Background colors, etc.

Implemented in BALL::VIEW::RTfactRenderer, and BALL::VIEW::CudaVolumeRenderer.

void BALL::VIEW::BufferedRenderer::renderToBuffer ( RenderTarget renderTarget,
const Stage stage 
)
inline

Render the current frame to the target's buffer using the Stage setup. Throws FrameBufferFormatException if the RenderTarget's format is not the one that you set before with setFrameBufferFormat().

Exceptions
Exception::InvalidFormatif the FrameBufferFormat is not supported by the renderer
Exception::NoBufferAvailableif the frame buffer was not correctly initialized

Definition at line 62 of file bufferedRenderer.h.

virtual void BALL::VIEW::BufferedRenderer::renderToBufferImpl ( FrameBufferPtr  buffer)
protectedpure virtual

Render to the frame buffer.

Precondition
The frame buffer's format is the one stored in bufferFormat and prepareBufferedRendering() has been called.

Implemented in BALL::VIEW::RTfactRenderer, and BALL::VIEW::CudaVolumeRenderer.

bool BALL::VIEW::BufferedRenderer::setFrameBufferFormat ( const FrameBufferFormat format)
inline

Tries to choose a format for buffered rendering.

Returns
true if the format could be set,
false if it is not supported.

Definition at line 43 of file bufferedRenderer.h.

virtual void BALL::VIEW::BufferedRenderer::setOffset ( Size  offset)
inlinevirtual

Set an offset into the data buffer

Definition at line 94 of file bufferedRenderer.h.

virtual void BALL::VIEW::BufferedRenderer::setStride ( Size  stride)
inlinevirtual

Set a stride for the data buffer

Definition at line 98 of file bufferedRenderer.h.

virtual bool BALL::VIEW::BufferedRenderer::supports ( const PixelFormat format) const
pure virtual

Checks if a particular PixelFormat is supported by the renderer.

Implemented in BALL::VIEW::RaytracingRenderer.

virtual bool BALL::VIEW::BufferedRenderer::supports ( const FrameBufferFormat format) const
protectedpure virtual

Checks if a particular FrameBufferFormat is supported by the renderer. This checks the combination of pixel format and resolution. If this returns true, the renderer is able to write to a buffer in this format.

Implemented in BALL::VIEW::RaytracingRenderer.

Member Data Documentation

Size BALL::VIEW::BufferedRenderer::offset_
protected

Definition at line 127 of file bufferedRenderer.h.

Size BALL::VIEW::BufferedRenderer::stride_
protected

Definition at line 128 of file bufferedRenderer.h.