diff --git a/kraken/KRPipeline.cpp b/kraken/KRPipeline.cpp index 45ea2c6..650952e 100644 --- a/kraken/KRPipeline.cpp +++ b/kraken/KRPipeline.cpp @@ -842,7 +842,10 @@ bool KRPipeline::bind(KRNode::RenderInfo& ri, const Matrix4& matModel) } } - vkCmdBindPipeline(ri.commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_graphicsPipeline); + if (ri.pipeline != this) { + vkCmdBindPipeline(ri.commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_graphicsPipeline); + ri.pipeline = this; + } return true; } diff --git a/kraken/nodes/KRNode.h b/kraken/nodes/KRNode.h index dd5546e..9a95d37 100755 --- a/kraken/nodes/KRNode.h +++ b/kraken/nodes/KRNode.h @@ -56,6 +56,7 @@ class KRPointLight; class KRSpotLight; class KRDirectionalLight; class KRRenderPass; +class KRPipeline; namespace tinyxml2 { class XMLNode; class XMLAttribute; @@ -92,6 +93,7 @@ public: std::vector spot_lights; KRViewport* viewport; KRRenderPass* renderPass; + KRPipeline* pipeline; }; static void InitNodeInfo(KrNodeInfo* nodeInfo);