VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
batchManager.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025-2026 Arnis Lektauers
3//
4// Created by Arnis Lektauers on 13.10.2025.
5//
6//
7//
8#pragma once
9
10#include <memory>
11#include <unordered_map>
12#include <vector>
13
14#include "batch.h"
15#include "batchGroup.h"
16#include "scene/layer.h"
17
18namespace visutwin::canvas
19{
20 class GraphicsDevice;
21 class Scene;
22
42 {
43 public:
44 explicit BatchManager(GraphicsDevice* device);
45
47 void addGroup(const BatchGroup& group);
48
50 void removeGroup(int groupId);
51
62 void prepare(Scene* scene = nullptr);
63
66 void destroy(Scene* scene = nullptr);
67
71 void updateAll();
72
73 const std::vector<std::unique_ptr<Batch>>& batches() const { return _batches; }
74
76 const BatchGroup* getGroupById(int groupId) const;
77
78 private:
85 std::unique_ptr<Batch> createBatch(const std::vector<MeshInstance*>& meshInstances,
86 int batchGroupId);
87
95 std::unique_ptr<Batch> createDynamicBatch(const std::vector<MeshInstance*>& meshInstances,
96 int batchGroupId);
97
98 GraphicsDevice* _device;
99 std::unordered_map<int, BatchGroup> _groups;
100 std::vector<std::unique_ptr<Batch>> _batches;
101 };
102}
const std::vector< std::unique_ptr< Batch > > & batches() const
BatchManager(GraphicsDevice *device)
const BatchGroup * getGroupById(int groupId) const
void prepare(Scene *scene=nullptr)
void addGroup(const BatchGroup &group)
void destroy(Scene *scene=nullptr)
Abstract GPU interface for resource creation, state management, and draw submission.
Container for the scene graph, lighting environment, fog, skybox, and layer composition.
Definition scene.h:29