#ifdef USING_GLSL #include #include Shaders::Shaders(vk::Device *device) : m_Device(device) { auto vertShader = readFile("vert.spv"); auto fragShader = readFile("frag.spv"); vk::ShaderModuleCreateInfo vertCreateInfo = {}; vertCreateInfo.codeSize = vertShader.size() * sizeof(char); vertCreateInfo.pCode = reinterpret_cast(vertShader.data()); m_VertShaderModule = m_Device->createShaderModule(vertCreateInfo); vk::ShaderModuleCreateInfo fragCreateInfo = {}; fragCreateInfo.codeSize = fragShader.size() * sizeof(char); fragCreateInfo.pCode = reinterpret_cast(fragShader.data()); m_FragShaderModule = m_Device->createShaderModule(fragCreateInfo); vk::PipelineShaderStageCreateInfo vertShaderStageInfo = {}; vertShaderStageInfo.stage = vk::ShaderStageFlagBits::eVertex; vertShaderStageInfo.module = m_VertShaderModule; vertShaderStageInfo.pName = "main"; vk::PipelineShaderStageCreateInfo fragShaderStageInfo = {}; fragShaderStageInfo.stage = vk::ShaderStageFlagBits::eFragment; fragShaderStageInfo.module = m_FragShaderModule; fragShaderStageInfo.pName = "main"; m_ShaderStages.emplace_back(vertShaderStageInfo); m_ShaderStages.emplace_back(fragShaderStageInfo); m_BindingDescription = Vertex::getBindingDescription(); m_AttributeDescriptions = Vertex::getAttributeDescriptions(); m_VertInput.vertexBindingDescriptionCount = 1; m_VertInput.pVertexBindingDescriptions = &m_BindingDescription; m_VertInput.vertexAttributeDescriptionCount = static_cast(m_AttributeDescriptions.size()); m_VertInput.pVertexAttributeDescriptions = m_AttributeDescriptions.data(); } void Shaders::Finalize() { if (m_FragShaderModule) m_Device->destroyShaderModule(m_FragShaderModule); if (m_VertShaderModule) m_Device->destroyShaderModule(m_VertShaderModule); } #endif // USING_GLSL