NarcEngine 0.1.1
C++ Vulkan game engine
 
Loading...
Searching...
No Matches
EngineRenderer.h
1#pragma once
2
3#include "CommandBuffer.h"
4#include "CommandPool.h"
5#include "MultiFrameManager.h"
6
7#include "models/Renderer.h"
8
9#include "renderer/RenderTask.h"
10#include "renderer/SwapChain.h"
11
12namespace narc_engine {
13 class Material;
14 class UniformBuffer;
15
16 class EngineRenderer : public DeviceComponent
17 {
18 friend class EngineBinder;
19 friend class Engine;
20
21 public:
22 EngineRenderer();
23 ~EngineRenderer();
24
25 void drawFrame();
26 void updateUniformBuffer(UniformBuffer* buffer, RenderTask* rendererTask) const;
27
28 void attachRenderer(const Renderer* renderer);
29
30 private:
31 SwapChain m_swapChain;
32 std::unique_ptr<MultiFrameManager> m_frameManager;
33 std::map<uint32_t, RenderTask*> m_rendererTasks;
34
35 VkDescriptorSetLayout m_descriptorSetLayout;
36
37 void createDescriptorSetLayout();
38 void recordCommandBuffer(CommandBuffer* commandBuffer, uint32_t imageIndex, const std::vector<VkDescriptorSet>& descriptorSets);
39 RenderTask* createRenderTask(const Material* material);
40 };
41} // narc_engine
Definition CommandBuffer.h:6
Definition Material.h:12
Definition RenderTask.h:15
Definition Renderer.h:13
Definition SwapChain.h:13
Definition UniformBuffer.h:8