2020-04-13 11:24:53 +00:00
|
|
|
#ifndef SHADER_CODE_H
|
|
|
|
#define SHADER_CODE_H
|
|
|
|
|
|
|
|
#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(); }
|
|
|
|
|
2020-09-17 22:03:21 +00:00
|
|
|
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_; }
|
2020-09-17 22:03:21 +00:00
|
|
|
|
|
|
|
const std::string& name() const { return name_; }
|
|
|
|
|
2020-04-13 11:24:53 +00:00
|
|
|
private:
|
2020-09-17 22:03:21 +00:00
|
|
|
std::string name_;
|
|
|
|
|
2020-04-13 11:24:53 +00:00
|
|
|
std::unique_ptr<char[]> vertex_source_;
|
|
|
|
std::unique_ptr<char[]> fragment_source_;
|
2020-09-17 22:03:21 +00:00
|
|
|
|
|
|
|
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 // SHADER_CODE_H
|