diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-10-26 18:59:06 +0200 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-10-26 18:59:06 +0200 |
| commit | cf965d29b9092ea6b56847028dc885b67b1603e0 (patch) | |
| tree | dc2054210d903c5d629f0487e74a58e1b96958c3 /src/vkrenderer.hpp | |
| parent | a5082d2962d621dc7145614d655016c59ddacc5b (diff) | |
Diffstat (limited to 'src/vkrenderer.hpp')
| -rw-r--r-- | src/vkrenderer.hpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/vkrenderer.hpp b/src/vkrenderer.hpp new file mode 100644 index 0000000..ea85115 --- /dev/null +++ b/src/vkrenderer.hpp @@ -0,0 +1,69 @@ +#pragma once + +#include "vke.hpp" + +#define DRAW_FENCE_TIMEOUT 99900000 + +namespace vke { + + class vkRenderer + { + protected: + + bool prepared = false; + + vke::device_t* device; + vke::render_target_t* renderTarget; + vke::engine_t::UniformBuffers sharedUBOs; + + vke::ShadingContext* shadingCtx; + + VkCommandPool commandPool = VK_NULL_HANDLE; + std::vector<VkCommandBuffer>cmdBuffers; + + VkDescriptorSet descriptorSet = VK_NULL_HANDLE; + + std::vector<VkFence> fences; + VkSubmitInfo submitInfo; + + VkPipeline pipeline = VK_NULL_HANDLE; + VkPipelineLayout pipelineLayout = VK_NULL_HANDLE; + + std::vector<float> vertices; + vke::buffer_t* vertexBuff; + uint32_t vBufferSize = 10000 * sizeof(float) * 6; + + virtual void prepare(); + virtual void prepareRendering(); + virtual void configurePipelineLayout(); + virtual void loadRessources(); + virtual void freeRessources(); + virtual void prepareDescriptors(); + virtual void preparePipeline(); + + public: + VkSemaphore drawComplete = VK_NULL_HANDLE; + uint32_t vertexCount = 0; + uint32_t sdffVertexCount = 0; + + vkRenderer (); + virtual ~vkRenderer(); + + virtual void create (device_t *_device, vke::render_target_t* _renderTarget, + engine_t::UniformBuffers& _sharedUbos); + virtual void destroy(); + + virtual void buildCommandBuffer (); + virtual void rebuildCommandBuffer (); + virtual void draw(VkCommandBuffer cmdBuff); + + void submit (VkQueue queue, VkSemaphore *waitSemaphore, uint32_t waitSemaphoreCount); + + void drawLine(const glm::vec3& from,const glm::vec3& to,const glm::vec3& fromColor, const glm::vec3& toColor); + void drawLine(const glm::vec3& from,const glm::vec3& to,const glm::vec3& color); + + virtual void flush(); + virtual void clear(); + }; +} + |