MyGUI 3.4.3
MyGUI_RenderItem.h
Go to the documentation of this file.
1/*
2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3 * Distributed under the MIT License
4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5 */
6
7#ifndef MYGUI_RENDER_ITEM_H_
8#define MYGUI_RENDER_ITEM_H_
9
10#include "MyGUI_Prerequest.h"
11#include "MyGUI_ISubWidget.h"
12#include "MyGUI_IVertexBuffer.h"
13#include "MyGUI_VertexData.h"
14#include "MyGUI_IRenderTarget.h"
15
16namespace MyGUI
17{
18
19 using DrawItemInfo = std::pair<ISubWidget*, size_t>;
20 using VectorDrawItem = std::vector<DrawItemInfo>;
21
23 {
24 public:
25 RenderItem();
26 virtual ~RenderItem();
27
28 void renderToTarget(IRenderTarget* _target, bool _update);
29
30 void setTexture(ITexture* _value);
31 ITexture* getTexture() const;
32
33 void setManualRender(bool _value);
34 bool getManualRender() const;
35
36 void addDrawItem(ISubWidget* _item, size_t _count);
37 void removeDrawItem(ISubWidget* _item);
38 void reallockDrawItem(ISubWidget* _item, size_t _count);
39
40 void outOfDate();
41 bool isOutOfDate() const;
42
43 size_t getNeedVertexCount() const;
44 size_t getVertexCount() const;
45
46 bool getCurrentUpdate() const;
47 Vertex* getCurrentVertexBuffer() const;
48
49 void setLastVertexCount(size_t _count);
50
51 IRenderTarget* getRenderTarget();
52
53 void setNeedCompression(bool _compression);
54 bool getNeedCompression() const;
55
56 private:
57 ITexture* mTexture{nullptr};
58
59 size_t mNeedVertexCount{0};
60
61 bool mOutOfDate{false};
62 VectorDrawItem mDrawItems;
63
64 // колличество отрендренных реально вершин
65 size_t mCountVertex{0};
66
67 bool mCurrentUpdate{true};
68 Vertex* mCurrentVertex{nullptr};
69 size_t mLastVertexCount{0};
70
71 IVertexBuffer* mVertexBuffer{nullptr};
72 IRenderTarget* mRenderTarget{nullptr};
73
74 bool mNeedCompression{false};
75 bool mManualRender{false};
76 };
77
78} // namespace MyGUI
79
80#endif // MYGUI_RENDER_ITEM_H_
#define MYGUI_EXPORT
std::vector< DrawItemInfo > VectorDrawItem
std::pair< ISubWidget *, size_t > DrawItemInfo