1 /*! 2 @file 3 @author Albert Semenov 4 @date 08/2012 5 */ 6 7 #ifndef _1fa6ce0c_1576_452a_98d8_ac49ed9e38d1_ 8 #define _1fa6ce0c_1576_452a_98d8_ac49ed9e38d1_ 9 10 #include "MyGUI_Prerequest.h" 11 #include "MyGUI_RenderFormat.h" 12 #include "MyGUI_RenderManager.h" 13 #include "MyGUI_ExportTexture.h" 14 #include "MyGUI_ExportVertexBuffer.h" 15 #include "RenderBatchInfo.h" 16 17 namespace MyGUI 18 { 19 20 class ExportRenderManager : 21 public RenderManager, 22 public IRenderTarget 23 { 24 public: 25 ExportRenderManager(); 26 27 void initialise(); 28 void shutdown(); 29 30 static ExportRenderManager& getInstance(); 31 static ExportRenderManager* getInstancePtr(); 32 33 /** @see RenderManager::getViewSize */ 34 virtual const IntSize& getViewSize() const; 35 36 /** @see RenderManager::getVertexFormat */ 37 virtual VertexColourType getVertexFormat(); 38 39 /** @see RenderManager::createVertexBuffer */ 40 virtual IVertexBuffer* createVertexBuffer(); 41 /** @see RenderManager::destroyVertexBuffer */ 42 virtual void destroyVertexBuffer(IVertexBuffer* _buffer); 43 44 /** @see RenderManager::createTexture */ 45 virtual ITexture* createTexture(const std::string& _name); 46 /** @see RenderManager::destroyTexture */ 47 virtual void destroyTexture(ITexture* _texture); 48 /** @see RenderManager::getTexture */ 49 virtual ITexture* getTexture(const std::string& _name); 50 51 /** @see RenderManager::isFormatSupported */ 52 virtual bool isFormatSupported(PixelFormat _format, TextureUsage _usage); 53 54 /** @see IRenderTarget::begin */ 55 virtual void begin(); 56 /** @see IRenderTarget::end */ 57 virtual void end(); 58 59 /** @see IRenderTarget::doRender */ 60 virtual void doRender(IVertexBuffer* _buffer, ITexture* _texture, size_t _count); 61 62 /** @see IRenderTarget::getInfo */ 63 virtual const RenderTargetInfo& getInfo(); 64 65 /** @see RenderManager::setViewSize */ 66 void setViewSize(int _width, int _height) override; 67 68 /*internal:*/ 69 void drawOneFrame(); 70 71 RenderBatchInfo* getBatchInfo(size_t _index); 72 void addTexture(const std::string& _name, size_t _id, int _width, int _height); 73 74 void doRenderLayer(ILayer* _layer); 75 76 private: 77 void destroyAllTextures(); 78 79 private: 80 IntSize mViewSize; 81 RenderTargetInfo mInfo; 82 typedef std::map<std::string, ExportTexture*> MapTexture; 83 MapTexture mTextures; 84 bool mUpdate; 85 typedef std::vector<RenderBatchInfo> VectorBatchInfo; 86 VectorBatchInfo mBatchInfo; 87 typedef std::vector<ExportVertexBuffer*> VectorExportVertexBuffer; 88 VectorExportVertexBuffer mExportVertexBuffer; 89 ILayer* mCurrentLayer; 90 }; 91 92 } 93 94 #endif 95