kaliber/src/engine/shader_source.h

42 lines
1011 B
C
Raw Normal View History

#ifndef ENGINE_SHADER_CODE_H
#define ENGINE_SHADER_CODE_H
2020-04-13 11:24:53 +00:00
#include <memory>
#include <string>
namespace eng {
class ShaderSource {
public:
ShaderSource() = default;
~ShaderSource() = default;
bool Load(const std::string& name);
const char* GetVertexSource() const { return vertex_source_.get(); }
const char* GetFragmentSource() const { return fragment_source_.get(); }
size_t vertex_source_size() const { return vertex_source_size_; }
2020-12-24 23:22:41 +00:00
size_t fragment_source_size() const { return fragment_source_size_; }
const std::string& name() const { return name_; }
2020-04-13 11:24:53 +00:00
private:
std::string name_;
2020-04-13 11:24:53 +00:00
std::unique_ptr<char[]> vertex_source_;
std::unique_ptr<char[]> fragment_source_;
size_t vertex_source_size_ = 0;
size_t fragment_source_size_ = 0;
2020-12-24 23:22:41 +00:00
size_t LoadInternal(const std::string& name,
std::unique_ptr<char[]>& dst,
const char* inject,
size_t inject_len);
2020-04-13 11:24:53 +00:00
};
} // namespace eng
#endif // ENGINE_SHADER_CODE_H