From 6a56c9ebfee291de2c9fa6d575d165ac773d6807 Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Mon, 28 Feb 2022 01:07:32 -0800 Subject: [PATCH] Added Vulkan versions of KRVBOData::bind and KRPipeline::bind --- kraken/KRMeshManager.cpp | 7 +++++++ kraken/KRMeshManager.h | 1 + kraken/KRPipeline.cpp | 7 ++++++- kraken/KRPipeline.h | 3 ++- kraken/KRPresentationThread.cpp | 7 ++----- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/kraken/KRMeshManager.cpp b/kraken/KRMeshManager.cpp index 686045e..cbe6286 100755 --- a/kraken/KRMeshManager.cpp +++ b/kraken/KRMeshManager.cpp @@ -809,6 +809,13 @@ void KRMeshManager::KRVBOData::bind() #endif } +void KRMeshManager::KRVBOData::bind(VkCommandBuffer& commandBuffer) +{ + VkBuffer vertexBuffers[] = { getVertexBuffer() }; + VkDeviceSize offsets[] = { 0 }; + vkCmdBindVertexBuffers(commandBuffer, 0, 1, vertexBuffers, offsets); +} + void KRMeshManager::KRVBOData::resetPoolExpiry(float lodCoverage) { long current_frame = m_manager->getContext().getCurrentFrame(); diff --git a/kraken/KRMeshManager.h b/kraken/KRMeshManager.h index 23e8574..cc43848 100755 --- a/kraken/KRMeshManager.h +++ b/kraken/KRMeshManager.h @@ -96,6 +96,7 @@ public: void load(); void unload(); void bind(); + void bind(VkCommandBuffer& commandBuffer); // Disable copy constructors KRVBOData(const KRVBOData& o) = delete; diff --git a/kraken/KRPipeline.cpp b/kraken/KRPipeline.cpp index 8686580..354bf04 100644 --- a/kraken/KRPipeline.cpp +++ b/kraken/KRPipeline.cpp @@ -548,6 +548,11 @@ void KRPipeline::setUniform(int location, const Matrix4 &value) } } +void KRPipeline::bind(VkCommandBuffer& commandBuffer) +{ + vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_graphicsPipeline); +} + bool KRPipeline::bind(KRCamera &camera, const KRViewport &viewport, const Matrix4 &matModel, const std::vector &point_lights, const std::vector &directional_lights, const std::vector&spot_lights, const KRNode::RenderPass &renderPass, const Vector3 &rim_color, float rim_power, const Vector4 &fade_color) { if(m_iProgram == 0) { return false; @@ -795,4 +800,4 @@ const char *KRPipeline::getKey() const { VkPipeline& KRPipeline::getPipeline() { return m_graphicsPipeline; -} \ No newline at end of file +} diff --git a/kraken/KRPipeline.h b/kraken/KRPipeline.h index cb07c53..cc801b8 100644 --- a/kraken/KRPipeline.h +++ b/kraken/KRPipeline.h @@ -51,7 +51,8 @@ public: const char *getKey() const; bool bind(KRCamera &camera, const KRViewport &viewport, const Matrix4 &matModel, const std::vector &point_lights, const std::vector &directional_lights, const std::vector&spot_lights, const KRNode::RenderPass &renderPass, const Vector3 &rim_color, float rim_power, const Vector4 &fade_color); - + void bind(VkCommandBuffer& commandBuffer); + enum { KRENGINE_UNIFORM_MATERIAL_AMBIENT = 0, KRENGINE_UNIFORM_MATERIAL_DIFFUSE, diff --git a/kraken/KRPresentationThread.cpp b/kraken/KRPresentationThread.cpp index c5c6d04..516303e 100644 --- a/kraken/KRPresentationThread.cpp +++ b/kraken/KRPresentationThread.cpp @@ -168,11 +168,8 @@ void KRPresentationThread::renderFrame() if (haveMesh) { KRPipeline* testPipeline = m_pContext->getPipelineManager()->getPipeline(surface, "vulkan_test", testVertices.getVertexAttributes()); - vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, testPipeline->getPipeline()); - - VkBuffer vertexBuffers[] = { testVertices.getVertexBuffer() }; - VkDeviceSize offsets[] = { 0 }; - vkCmdBindVertexBuffers(commandBuffer, 0, 1, vertexBuffers, offsets); + testPipeline->bind(commandBuffer); + testVertices.bind(commandBuffer); vkCmdDraw(commandBuffer, 3, 1, 0, 0); }