summaryrefslogtreecommitdiffstats
path: root/src/render/renderers/opengl/renderer/rendercommand_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/renderers/opengl/renderer/rendercommand_p.h')
-rw-r--r--src/render/renderers/opengl/renderer/rendercommand_p.h53
1 files changed, 50 insertions, 3 deletions
diff --git a/src/render/renderers/opengl/renderer/rendercommand_p.h b/src/render/renderers/opengl/renderer/rendercommand_p.h
index 58ab0cadd..0180d6996 100644
--- a/src/render/renderers/opengl/renderer/rendercommand_p.h
+++ b/src/render/renderers/opengl/renderer/rendercommand_p.h
@@ -131,11 +131,58 @@ inline bool operator!=(const RenderCommand &lhs, const RenderCommand &rhs) noexc
struct EntityRenderCommandData
{
- Entity *entity;
- RenderCommand command;
- RenderPassParameterData passData;
+ QVector<Entity *> entities;
+ QVector<RenderCommand> commands;
+ QVector<RenderPassParameterData> passesData;
+
+ void reserve(int size)
+ {
+ entities.reserve(size);
+ commands.reserve(size);
+ passesData.reserve(size);
+ }
+
+ inline int size() const { return entities.size(); }
+
+ inline void push_back(Entity *e, const RenderCommand &c, const RenderPassParameterData &p)
+ {
+ entities.push_back(e);
+ commands.push_back(c);
+ passesData.push_back(p);
+ }
+
+ inline void push_back(Entity *e, RenderCommand &&c, RenderPassParameterData &&p)
+ {
+ entities.push_back(e);
+ commands.push_back(std::move(c));
+ passesData.push_back(std::move(p));
+ }
+
+ EntityRenderCommandData &operator+=(const EntityRenderCommandData &t)
+ {
+ entities += t.entities;
+ commands += t.commands;
+ passesData += t.passesData;
+ return *this;
+ }
+
+ EntityRenderCommandData &operator+=(EntityRenderCommandData &&t)
+ {
+ entities += std::move(t.entities);
+ commands += std::move(t.commands);
+ passesData += std::move(t.passesData);
+ return *this;
+ }
+
+ EntityRenderCommandData mid(int idx, int len) const
+ {
+ return { entities.mid(idx, len), commands.mid(idx, len), passesData.mid(idx, len) };
+ }
+
+
};
+
} // namespace Render
} // namespace Qt3DRender