diff --git a/kraken/KRShader.cpp b/kraken/KRShader.cpp index 620bf32..d9ac35d 100644 --- a/kraken/KRShader.cpp +++ b/kraken/KRShader.cpp @@ -63,3 +63,20 @@ KRDataBlock *KRShader::getData() { return m_pData; } + +bool KRShader::createShaderModule(VkDevice& device, VkShaderModule& module) +{ + bool success = true; + VkShaderModuleCreateInfo createInfo{}; + m_pData->lock(); + createInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; + createInfo.codeSize = m_pData->getSize(); + createInfo.pCode = reinterpret_cast(m_pData->getStart()); + + VkShaderModule shaderModule; + if (vkCreateShaderModule(device, &createInfo, nullptr, &module) != VK_SUCCESS) { + success = false; + } + m_pData->unlock(); + return success; +} diff --git a/kraken/KRShader.h b/kraken/KRShader.h index fd52eca..edeba84 100644 --- a/kraken/KRShader.h +++ b/kraken/KRShader.h @@ -45,6 +45,8 @@ public: virtual ~KRShader(); virtual std::string getExtension(); + + bool createShaderModule(VkDevice& device, VkShaderModule& module); virtual bool save(KRDataBlock &data);