MyGUI
3.2.1
|
00001 /* 00002 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 00003 * Distributed under the MIT License 00004 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 00005 */ 00006 00007 #ifndef __MYGUI_RENDER_ITEM_H__ 00008 #define __MYGUI_RENDER_ITEM_H__ 00009 00010 #include "MyGUI_Prerequest.h" 00011 #include "MyGUI_ISubWidget.h" 00012 #include "MyGUI_IVertexBuffer.h" 00013 #include "MyGUI_VertexData.h" 00014 #include "MyGUI_IRenderTarget.h" 00015 00016 namespace MyGUI 00017 { 00018 00019 typedef std::pair<ISubWidget*, size_t> DrawItemInfo; 00020 typedef std::vector<DrawItemInfo> VectorDrawItem; 00021 00022 class MYGUI_EXPORT RenderItem 00023 { 00024 public: 00025 RenderItem(); 00026 virtual ~RenderItem(); 00027 00028 void renderToTarget(IRenderTarget* _target, bool _update); 00029 00030 void setTexture(ITexture* _value); 00031 ITexture* getTexture(); 00032 00033 void setManualRender(bool _value); 00034 bool getManualRender() const; 00035 00036 void addDrawItem(ISubWidget* _item, size_t _count); 00037 void removeDrawItem(ISubWidget* _item); 00038 void reallockDrawItem(ISubWidget* _item, size_t _count); 00039 00040 void outOfDate(); 00041 bool isOutOfDate() const; 00042 00043 size_t getNeedVertexCount() const; 00044 size_t getVertexCount() const; 00045 00046 bool getCurrentUpdate() const; 00047 Vertex* getCurrentVertexBuffer() const; 00048 00049 void setLastVertexCount(size_t _count); 00050 00051 IRenderTarget* getRenderTarget(); 00052 00053 void setNeedCompression(bool _compression); 00054 bool getNeedCompression() const; 00055 00056 private: 00057 #if MYGUI_DEBUG_MODE == 1 00058 std::string mTextureName; 00059 #endif 00060 00061 ITexture* mTexture; 00062 00063 size_t mNeedVertexCount; 00064 00065 bool mOutOfDate; 00066 VectorDrawItem mDrawItems; 00067 00068 // колличество отрендренных реально вершин 00069 size_t mCountVertex; 00070 00071 bool mCurrentUpdate; 00072 Vertex* mCurrentVertex; 00073 size_t mLastVertexCount; 00074 00075 IVertexBuffer* mVertexBuffer; 00076 IRenderTarget* mRenderTarget; 00077 00078 bool mNeedCompression; 00079 bool mManualRender; 00080 }; 00081 00082 } // namespace MyGUI 00083 00084 #endif // __MYGUI_RENDER_ITEM_H__