pleascach/Renderer/Shader.cpp
2024-01-25 20:33:45 -05:00

32 lines
793 B
C++

#include <Renderer/Shader.hpp>
#include <util/log.hpp>
#include <util/file.hpp>
using namespace std::string_literals;
Shader::Shader(vk::Device dev, const std::string& fname, vk::ShaderStageFlagBits stage) : dev(dev), fname(fname), stage(stage) {
std::vector<uint8_t> src;
try {
src = file::slurpb(fname);
} catch (std::exception& e) {
Log::error("Failed to read file " + fname + ": "+ e.what() + "\n");
}
auto module_info = vk::ShaderModuleCreateInfo{
.codeSize = src.size(),
.pCode = reinterpret_cast<const uint32_t*>(src.data()),
};
if (!(module = dev.createShaderModule(module_info))) {
Log::error(fname + ": failed to create shader\n");
}
Log::info("Successfully created shader "s + fname + "\n");
}
void Shader::cleanup() {
dev.destroyShaderModule(module);
}