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 _CEGUIOgreRenderer_h_
00029 #define _CEGUIOgreRenderer_h_
00030
00031 #include "../../CEGUIRenderer.h"
00032 #include "../../CEGUISize.h"
00033 #include "../../CEGUIVector.h"
00034
00035 #include <OgreBlendMode.h>
00036 #include <OgreTextureUnitState.h>
00037
00038 #include <vector>
00039
00040 #if (defined( __WIN32__ ) || defined( _WIN32 )) && !defined(CEGUI_STATIC)
00041 # ifdef OGRE_GUIRENDERER_EXPORTS
00042 # define OGRE_GUIRENDERER_API __declspec(dllexport)
00043 # else
00044 # define OGRE_GUIRENDERER_API __declspec(dllimport)
00045 # endif
00046 #else
00047 # define OGRE_GUIRENDERER_API
00048 #endif
00049
00050 #if defined(_MSC_VER)
00051 # pragma warning(push)
00052 # pragma warning(disable : 4251)
00053 #endif
00054
00055 namespace Ogre
00056 {
00057 class Root;
00058 class RenderSystem;
00059 }
00060
00061
00062 namespace CEGUI
00063 {
00064 class OgreGeometryBuffer;
00065 class OgreTexture;
00066 class OgreResourceProvider;
00067 class OgreImageCodec;
00068
00070 class OGRE_GUIRENDERER_API OgreRenderer : public Renderer
00071 {
00072 public:
00095 static OgreRenderer& bootstrapSystem();
00096
00118 static OgreRenderer& bootstrapSystem(Ogre::RenderTarget& target);
00119
00136 static void destroySystem();
00137
00148 static OgreRenderer& create();
00149
00155 static OgreRenderer& create(Ogre::RenderTarget& target);
00156
00158 static void destroy(OgreRenderer& renderer);
00159
00161 static OgreResourceProvider& createOgreResourceProvider();
00162
00164 static void destroyOgreResourceProvider(OgreResourceProvider& rp);
00165
00167 static OgreImageCodec& createOgreImageCodec();
00168
00170 static void destroyOgreImageCodec(OgreImageCodec& ic);
00171
00173 void setRenderingEnabled(const bool enabled);
00174
00176 bool isRenderingEnabled() const;
00177
00192 Texture& createTexture(Ogre::TexturePtr& tex, bool take_ownership = false);
00193
00194
00195 RenderingRoot& getDefaultRenderingRoot();
00196 GeometryBuffer& createGeometryBuffer();
00197 void destroyGeometryBuffer(const GeometryBuffer& buffer);
00198 void destroyAllGeometryBuffers();
00199 TextureTarget* createTextureTarget();
00200 void destroyTextureTarget(TextureTarget* target);
00201 void destroyAllTextureTargets();
00202 Texture& createTexture();
00203 Texture& createTexture(const String& filename, const String& resourceGroup);
00204 Texture& createTexture(const Size& size);
00205 void destroyTexture(Texture& texture);
00206 void destroyAllTextures();
00207 void beginRendering();
00208 void endRendering();
00209 void setDisplaySize(const Size& sz);
00210 const Size& getDisplaySize() const;
00211 const Vector2& getDisplayDPI() const;
00212 uint getMaxTextureSize() const;
00213 const String& getIdentifierString() const;
00214
00215 protected:
00217 OgreRenderer();
00219 OgreRenderer(Ogre::RenderTarget& target);
00221 virtual ~OgreRenderer();
00222
00224 void checkOgreInitialised();
00225
00227 void constructor_impl(Ogre::RenderTarget& target);
00228
00230 static String d_rendererID;
00232 Size d_displaySize;
00234 Vector2 d_displayDPI;
00236 RenderingRoot* d_defaultRoot;
00238 RenderTarget* d_defaultTarget;
00240 typedef std::vector<TextureTarget*> TextureTargetList;
00242 TextureTargetList d_textureTargets;
00244 typedef std::vector<OgreGeometryBuffer*> GeometryBufferList;
00246 GeometryBufferList d_geometryBuffers;
00248 typedef std::vector<OgreTexture*> TextureList;
00250 TextureList d_textures;
00252 uint d_maxTextureSize;
00254 Ogre::Root* d_ogreRoot;
00256 Ogre::RenderSystem* d_renderSystem;
00257 };
00258
00259
00260 }
00261
00262 #if defined(_MSC_VER)
00263 # pragma warning(pop)
00264 #endif
00265
00266 #endif // end of guard _CEGUIOgreRenderer_h_