Engine
Frameworkcreatedbymeusableforthecreationofsimplegames.CurrentlysupportsOpenGL(Verysimple)andVulkan.
VulkanSpriteRenderer.hpp
Go to the documentation of this file.
1 #pragma once
3 #ifdef USING_VULKAN
4 
5 #include <ThirdParty/Vulkan/Include/vulkan/vulkan.h>
6 
12 #include <ThirdParty/glm/glm/glm.hpp>
13 #include <ThirdParty/EASTL-master/include/EASTL/shared_ptr.h>
14 
15 namespace Engine {
16 
17  class VulkanRenderer;
18 
19  class VulkanSpriteRenderer
20  {
21  public:
22  VulkanSpriteRenderer(VulkanRenderer* renderer, VulkanLogicalDevice* device, VulkanDescriptorPool* descriptorPool);
23  ~VulkanSpriteRenderer();
24 
25  void StartRender(VkCommandBuffer renderPassBuffer, glm::mat4 viewMatrix, glm::mat4 projectionMatrix);
26 
27  void RenderSprite(eastl::weak_ptr<VulkanTexture> texture, glm::mat4 modelMatrix);
28 
29  void FinishRender();
30 
31  void Clean() const;
32 
33  void Recreate();
34 
35  protected:
36  eastl::unique_ptr<VulkanPipeline> renderPassPipeline;
37 
38  eastl::unique_ptr<VulkanBuffer> uboBuffer;
39  eastl::unique_ptr<VulkanBuffer> vertexBuffer;
40  eastl::unique_ptr<VulkanBuffer> indexBuffer;
41 
42  eastl::vector<uint32_t> indices;
43 
44  typedef struct {
45  glm::vec3 position;
46  glm::vec2 texCoord;
47  }VertexInfo_t;
48 
49  typedef struct {
50  glm::mat4 view;
51  glm::mat4 proj;
52  }Ubo_t;
53 
54  Ubo_t ubo;
55 
56  typedef struct {
57  glm::mat4 model;
58  }PushConstants_t;
59 
60  VulkanRenderer* renderer;
61  VulkanLogicalDevice* device;
62  VulkanDescriptorPool* descriptorPool;
63 
64  VkDescriptorSet renderUboDescriptorSet;
65 
66  VkCommandBuffer renderCommandBuffer;
67 
68 
69  };
70 
71 }
72 
73 #endif // USING_VULKAN