00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _CEGUIOgreRenderTarget_h_
00029 #define _CEGUIOgreRenderTarget_h_
00030
00031 #include "../../CEGUIRenderTarget.h"
00032 #include "CEGUIOgreRenderer.h"
00033 #include "../../CEGUIRect.h"
00034 #include <OgreMatrix4.h>
00035
00036
00037 namespace CEGUI
00038 {
00040 class OGRE_GUIRENDERER_API OgreRenderTarget : public virtual RenderTarget
00041 {
00042 public:
00044 OgreRenderTarget(OgreRenderer& owner, Ogre::RenderSystem& rs);
00045
00047 virtual ~OgreRenderTarget();
00048
00062 void setOgreViewportDimensions(const Rect& area);
00063
00064
00065 void draw(const GeometryBuffer& buffer);
00066 void draw(const RenderQueue& queue);
00067 void setArea(const Rect& area);
00068 const Rect& getArea() const;
00069 void activate();
00070 void deactivate();
00071 void unprojectPoint(const GeometryBuffer& buff,
00072 const Vector2& p_in, Vector2& p_out) const;
00073
00074 protected:
00076 void updateMatrix() const;
00078 void updateViewport();
00080 void updateOgreViewportDimensions(const Ogre::RenderTarget* const rt);
00081
00083 OgreRenderer& d_owner;
00085 Ogre::RenderSystem& d_renderSystem;
00087 Rect d_area;
00089 Ogre::RenderTarget* d_renderTarget;
00091 Ogre::Viewport* d_viewport;
00093 mutable Ogre::Matrix4 d_matrix;
00095 mutable bool d_matrixValid;
00097 mutable float d_viewDistance;
00099 bool d_viewportValid;
00101 Rect d_ogreViewportDimensions;
00102 };
00103
00104 }
00105
00106 #endif // end of guard _CEGUIOgreRenderTarget_h_