aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/vkrenderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vkrenderer.h')
-rw-r--r--src/vkrenderer.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/vkrenderer.h b/src/vkrenderer.h
new file mode 100644
index 0000000..d1c7aec
--- /dev/null
+++ b/src/vkrenderer.h
@@ -0,0 +1,70 @@
+#pragma once
+
+#include "VkEngine.h"
+#include "VulkanSwapChain.hpp"
+
+#define DRAW_FENCE_TIMEOUT 99900000
+
+namespace vks {
+
+ class vkRenderer
+ {
+ protected:
+
+ bool prepared = false;
+
+ vks::VulkanDevice* device;
+ vks::RenderTarget* renderTarget;
+ vks::VkEngine::UniformBuffers sharedUBOs;
+
+ vks::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;
+ vks::Buffer 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 (ptrVkDev _device, vks::RenderTarget* _renderTarget,
+ VkEngine::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();
+ };
+}
+