Engine
Frameworkcreatedbymeusableforthecreationofsimplegames.CurrentlysupportsOpenGL(Verysimple)andVulkan.
VulkanEmitter.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 
5 #ifdef USING_VULKAN
6 
8 
12 
13 #include <ThirdParty/EASTL-master/include/EASTL/unique_ptr.h>
14 
15 namespace Engine {
16 
17  class VulkanRenderer;
18 
19  class VulkanEmitter : public Emitter
20  {
21  public:
22  VulkanEmitter();
23  ~VulkanEmitter();
24 
25  void Compile() override;
26 
27  protected:
28  eastl::unique_ptr<VulkanBuffer> particleBuffer;
29  eastl::unique_ptr<VulkanBuffer> stagingBuffer;
30 
31  bool bufferQueueFamilyTransitionsNeseccary;
32 
33  int renderQueueFamily;
34  int computeQueueFamily;
35 
36  eastl::unique_ptr<VulkanComputePipeline> pipeline;
37 
38  static VulkanLogicalDevice* device;
39  static VulkanRenderer* renderer;
40  static VmaAllocator allocator;
41  static VkCommandPool commandPool;
42 
43  static void InitParticleEmitter(VulkanRenderer* renderer, VulkanLogicalDevice* device, VmaAllocator allocator, VkCommandPool commandPool);
44 
45  };
46 
47 }
48 
49 #endif