Equalizer  2.1.0
Parallel Rendering Framework
frame.h
1 
2 /* Copyright (c) 2006-2017, Stefan Eilemann <eile@equalizergraphics.com>
3  * Daniel Nachbaur <danielnachbaur@gmail.com>
4  * Cedric Stalder <cedric.stalder@gmail.com>
5  * Enrique <egparedes@ifi.uzh.ch>
6  *
7  * This library is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU Lesser General Public License version 2.1 as published
9  * by the Free Software Foundation.
10  *
11  * This library is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14  * details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this library; if not, write to the Free Software Foundation, Inc.,
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19  */
20 
21 #ifndef EQ_FRAME_H
22 #define EQ_FRAME_H
23 
24 #include <eq/api.h>
25 #include <eq/fabric/frame.h> // base class
26 #include <eq/types.h>
27 #include <eq/zoomFilter.h> // enum
28 
29 namespace eq
30 {
31 namespace detail
32 {
33 class Frame;
34 }
35 
46 class Frame : public fabric::Frame
47 {
48 public:
50  EQ_API Frame();
51 
53  EQ_API virtual ~Frame();
54 
61  EQ_API void setZoomFilter(const ZoomFilter zoomFilter);
62 
67  EQ_API ZoomFilter getZoomFilter() const;
68 
70  EQ_API const Images& getImages() const;
71 
73  EQ_API void setFrameData(FrameDataPtr data);
74 
76  EQ_API FrameDataPtr getFrameData();
77 
79  EQ_API ConstFrameDataPtr getFrameData() const;
80 
82  EQ_API Buffer getBuffers() const;
83 
90  EQ_API void disableBuffer(const Buffer buffer);
91 
93  EQ_API void setAlphaUsage(const bool useAlpha);
94 
96  EQ_API void setQuality(const Buffer buffer, const float quality);
97 
99  EQ_API void useCompressor(const Buffer buffer, const uint32_t name);
101 
105  EQ_API void clear();
106 
108  void deleteGLObjects(util::ObjectManager& om);
109 
121  EQ_API void readback(util::ObjectManager& glObjects,
122  const DrawableConfig& config,
123  const PixelViewports& regions,
124  const RenderContext& context);
125 
140  EQ_API Images startReadback(util::ObjectManager& glObjects,
141  const DrawableConfig& config,
142  const PixelViewports& regions,
143  const RenderContext& context);
144 
152  void setReady();
153 
160  EQ_API bool isReady() const;
161 
163  EQ_API void waitReady(const uint32_t timeout = LB_TIMEOUT_INDEFINITE) const;
164 
171  void addListener(lunchbox::Monitor<uint32_t>& listener);
172 
179  void removeListener(lunchbox::Monitor<uint32_t>& listener);
181 
182 private:
183  detail::Frame* const _impl;
184 };
185 };
186 #endif // EQ_FRAME_H
std::vector< PixelViewport > PixelViewports
A vector of eq::PixelViewport.
Definition: eq/types.h:175
ZoomFilter
Filtering algorithm to applied during zoom operations.
Definition: zoomFilter.h:25
lunchbox::RefPtr< const FrameData > ConstFrameDataPtr
A reference-counted pointer to a const eq::FrameData.
Definition: eq/types.h:219
A holder for a frame data and related parameters.
Definition: fabric/frame.h:35
The Equalizer client library.
Definition: eq/agl/types.h:23
Buffer
Components of the frame are to be used during readback and assembly.
Definition: fabric/frame.h:42
lunchbox::RefPtr< FrameData > FrameDataPtr
A reference-counted pointer to an eq::FrameData.
Definition: eq/types.h:217
std::vector< Image * > Images
A vector of pointers to eq::Image.
Definition: eq/types.h:163
A facility class to manage OpenGL objects across shared contexts.
Definition: objectManager.h:56
A holder for a frame data and related parameters.
Definition: frame.h:46