Files
OpenVulkano/openVulkanoCpp/Scene/Shader.hpp
2020-10-28 01:13:11 +01:00

40 lines
872 B
C++

#pragma once
#include "Base/ICloseable.hpp"
#include <string>
#include <stdexcept>
namespace openVulkanoCpp
{
namespace Scene
{
enum class Topology
{
PointList, LineList, LineStripe, TriangleList, TriangleStripe
};
struct Shader : public virtual ICloseable
{
std::string vertexShaderName, fragmentShaderName;
Topology topology = Topology::TriangleList;
ICloseable* renderShader = nullptr;
Shader() = default;
~Shader() { if (renderShader) Shader::Close(); }
void Init(const std::string& vertexShaderName, const std::string& fragmentShaderName)
{
if (renderShader) throw std::runtime_error("Shader already initialized!");
this->vertexShaderName = vertexShaderName;
this->fragmentShaderName = fragmentShaderName;
}
void Close() override
{
renderShader->Close();
renderShader = nullptr;
}
};
}
}