OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
compositemaprenderer.hpp
Go to the documentation of this file.
1 #ifndef OPENMW_COMPONENTS_TERRAIN_COMPOSITEMAPRENDERER_H
2 #define OPENMW_COMPONENTS_TERRAIN_COMPOSITEMAPRENDERER_H
3 
4 #include <osg/Drawable>
5 
6 #include <OpenThreads/Mutex>
7 
8 #include <set>
9 
10 namespace osg
11 {
12  class FrameBufferObject;
13  class RenderInfo;
14  class Texture2D;
15 }
16 
17 namespace Terrain
18 {
19 
20  class CompositeMap : public osg::Referenced
21  {
22  public:
23  CompositeMap();
24  ~CompositeMap();
25  std::vector<osg::ref_ptr<osg::Drawable> > mDrawables;
26  osg::ref_ptr<osg::Texture2D> mTexture;
27  unsigned int mCompiled;
28  };
29 
33  class CompositeMapRenderer : public osg::Drawable
34  {
35  public:
37 
38  virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
39 
40  void compile(CompositeMap& compositeMap, osg::RenderInfo& renderInfo, double* timeLeft) const;
41 
43  void setMinimumTimeAvailableForCompile(double time);
44 
46  void setTargetFrameRate(float framerate);
47 
49  void addCompositeMap(CompositeMap* map, bool immediate=false);
50 
52  void setImmediate(CompositeMap* map);
53 
54  unsigned int getCompileSetSize() const;
55 
56  private:
59  mutable osg::Timer mTimer;
60 
61  typedef std::set<osg::ref_ptr<CompositeMap> > CompileSet;
62 
65 
67 
68  mutable OpenThreads::Mutex mMutex;
69 
70  osg::ref_ptr<osg::FrameBufferObject> mFBO;
71  };
72 
73 }
74 
75 #endif
CompileSet mImmediateCompileSet
Definition: compositemaprenderer.hpp:64
~CompositeMap()
Definition: compositemaprenderer.cpp:184
osg::ref_ptr< osg::Texture2D > mTexture
Definition: compositemaprenderer.hpp:26
CompileSet mCompiled
Definition: compositemaprenderer.hpp:66
CompositeMapRenderer()
Definition: compositemaprenderer.cpp:14
OpenThreads::Mutex mMutex
Definition: compositemaprenderer.hpp:68
virtual void drawImplementation(osg::RenderInfo &renderInfo) const
Definition: compositemaprenderer.cpp:26
std::set< osg::ref_ptr< CompositeMap > > CompileSet
Definition: compositemaprenderer.hpp:61
void setTargetFrameRate(float framerate)
If current frame rate is higher than this, the extra time will be set aside to do more compiling...
Definition: compositemaprenderer.cpp:146
Definition: compositemaprenderer.hpp:20
void setMinimumTimeAvailableForCompile(double time)
Set the available time in seconds for compiling (non-immediate) composite maps each frame...
Definition: compositemaprenderer.cpp:141
double mMinimumTimeAvailable
Definition: compositemaprenderer.hpp:58
unsigned int getCompileSetSize() const
Definition: compositemaprenderer.cpp:173
CompositeMap()
Definition: compositemaprenderer.cpp:179
void addCompositeMap(CompositeMap *map, bool immediate=false)
Add a composite map to be rendered.
Definition: compositemaprenderer.cpp:151
void setImmediate(CompositeMap *map)
Mark this composite map to be required for the current frame.
Definition: compositemaprenderer.cpp:160
CompileSet mCompileSet
Definition: compositemaprenderer.hpp:63
osg::Timer mTimer
Definition: compositemaprenderer.hpp:59
void compile(CompositeMap &compositeMap, osg::RenderInfo &renderInfo, double *timeLeft) const
Definition: compositemaprenderer.cpp:70
std::vector< osg::ref_ptr< osg::Drawable > > mDrawables
Definition: compositemaprenderer.hpp:25
osg::ref_ptr< osg::FrameBufferObject > mFBO
Definition: compositemaprenderer.hpp:70
unsigned int mCompiled
Definition: compositemaprenderer.hpp:27
The CompositeMapRenderer is responsible for updating composite map textures in a blocking or non-bloc...
Definition: compositemaprenderer.hpp:33
float mTargetFrameRate
Definition: compositemaprenderer.hpp:57