Ignition Rendering

API Reference

5.0.0
OgreRenderTarget.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 #ifndef IGNITION_RENDERING_OGRE_OGRERENDERTARGET_HH_
18 #define IGNITION_RENDERING_OGRE_OGRERENDERTARGET_HH_
19 
20 #include <ignition/math/Color.hh>
21 
28 
29 namespace Ogre
30 {
31  class Camera;
32  class RenderTarget;
33  class Texture;
34 }
35 
36 namespace ignition
37 {
38  namespace rendering
39  {
40  inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
41  //
42  class IGNITION_RENDERING_OGRE_VISIBLE OgreRenderTarget :
43  public virtual BaseRenderTarget<OgreObject>
44  {
45  protected: OgreRenderTarget();
46 
47  public: virtual ~OgreRenderTarget();
48 
49  public: virtual unsigned int AntiAliasing() const;
50 
51  public: virtual void SetAntiAliasing(unsigned int _aa);
52 
53  public: virtual void Copy(Image &_image) const override;
54 
55  public: virtual Ogre::Camera *Camera() const;
56 
57  public: virtual void SetCamera(Ogre::Camera *_camera);
58 
59  // Documentation inherited
60  public: virtual math::Color BackgroundColor() const override;
61 
62  public: virtual void SetBackgroundColor(math::Color _color);
63 
64  // Documentation inherited.
65  public: virtual void PreRender() override;
66 
67  // Documentation inherited.
68  public: virtual void PostRender() override;
69 
70  public: virtual void Render();
71 
72  public: virtual void Destroy() override = 0;
73 
77  public: void SetMaterial(MaterialPtr _material);
78 
79  public: virtual Ogre::RenderTarget *RenderTarget() const = 0;
80 
81  public: Ogre::Viewport *AddViewport(Ogre::Camera *_viewport);
82 
83  public: Ogre::Viewport *Viewport(const int _viewportId) const;
84 
85  public: void SetUpdate(const bool _value);
86 
87  public: void SetAutoUpdated(const bool _value);
88 
92  public: virtual void SetVisibilityMask(uint32_t _mask);
93 
94  protected: virtual void UpdateBackgroundColor();
95 
97  protected: virtual void UpdateRenderPassChain();
98 
99  protected: virtual void RebuildImpl() override;
100 
101  protected: virtual void RebuildTarget() = 0;
102 
103  protected: virtual void RebuildViewport();
104 
109  protected: void RebuildMaterial();
110 
111  protected: Ogre::Camera *ogreCamera = nullptr;
112 
113  protected: Ogre::Viewport *ogreViewport = nullptr;
114 
115  protected: Ogre::ColourValue ogreBackgroundColor;
116 
118  protected: MaterialPtr material;
119 
122 
123  protected: bool colorDirty = true;
124 
125  protected: unsigned int antiAliasing = 4;
126 
128  protected: uint32_t visibilityMask = IGN_VISIBILITY_ALL;
129  };
130 
131  class IGNITION_RENDERING_OGRE_VISIBLE OgreRenderTexture :
132  public virtual BaseRenderTexture<OgreRenderTarget>
133  {
134  protected: OgreRenderTexture();
135 
136  public: virtual ~OgreRenderTexture();
137 
138  public: virtual void Destroy() override;
139 
140  // Documentation inherited.
141  public: virtual void PreRender() override;
142 
143  // Documentation inherited.
144  public: virtual void PostRender() override;
145 
146  // Documentation inherited.
147  public: virtual unsigned int GLId();
148 
149  public: virtual void Buffer(float *buffer);
150 
151  public: virtual Ogre::RenderTarget *RenderTarget() const override;
152 
153  protected: virtual void RebuildTarget() override;
154 
155  protected: virtual void DestroyTarget();
156 
157  protected: virtual void BuildTarget();
158 
159  protected: Ogre::Texture *ogreTexture = nullptr;
160 
161  private: friend class OgreScene;
162  };
163 
164  class IGNITION_RENDERING_OGRE_VISIBLE OgreRenderWindow :
165  public virtual BaseRenderWindow<OgreRenderTarget>
166  {
167  protected: OgreRenderWindow();
168 
169  public: virtual ~OgreRenderWindow();
170 
171  public: virtual void Destroy();
172 
173  protected: virtual Ogre::RenderTarget *RenderTarget() const;
174 
175  protected: virtual void RebuildTarget();
176 
177  protected: virtual void BuildTarget();
178 
179  protected: Ogre::RenderTarget *ogreRenderWindow = nullptr;
180 
181  private: friend class OgreScene;
182  };
183  }
184  }
185 }
186 #endif
Definition: BaseRenderTarget.hh:98
#define IGN_VISIBILITY_ALL
Render everything visibility mask.
Definition: RenderTypes.hh:26
Ogre::ColourValue ogreBackgroundColor
Definition: OgreRenderTarget.hh:115
Definition: BaseRenderTarget.hh:35
Definition: OgreRenderTarget.hh:164
OgreRenderTargetMaterialPtr materialApplicator
Helper class that applies the material to the render target.
Definition: OgreRenderTarget.hh:121
Represents a render-target to which cameras can render images.
Definition: RenderTarget.hh:37
Definition: BaseRenderTarget.hh:111
Encapsulates a raw image buffer and relevant properties.
Definition: Image.hh:36
Definition: OgreRenderTarget.hh:42
MaterialPtr material
a material used by for the render target
Definition: OgreRenderTarget.hh:118
Posable camera used for rendering the scene graph.
Definition: Camera.hh:40
Definition: OgreCamera.hh:27
Definition: OgreScene.hh:39
Definition: OgreRenderTarget.hh:131