Merge branch 'wip'
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "Base/ICloseable.hpp"
|
||||
#include "Base/Utils.hpp"
|
||||
#include "Base/Render/RenderResource.hpp"
|
||||
#include "VertexInputDescription.hpp"
|
||||
#include "ShaderProgramType.hpp"
|
||||
#include "DescriptorInputDescription.hpp"
|
||||
@@ -81,7 +82,7 @@ namespace OpenVulkano::Scene
|
||||
|
||||
|
||||
|
||||
class Shader final : public ICloseable
|
||||
class Shader final : public RenderResourceHolder<Shader>, public ICloseable
|
||||
{
|
||||
public:
|
||||
std::vector<ShaderProgram> shaderPrograms{};
|
||||
@@ -90,7 +91,6 @@ namespace OpenVulkano::Scene
|
||||
std::vector<PushConstantRange> pushConstantRanges;
|
||||
Topology topology = Topology::TRIANGLE_LIST;
|
||||
CullMode cullMode = CullMode::BACK;
|
||||
ICloseable* renderShader = nullptr;
|
||||
CompareOp depthCompareOp = CompareOp::LESS;
|
||||
bool alphaBlend = false; // TODO allow fine control over blending
|
||||
bool depthTest = true;
|
||||
@@ -98,7 +98,7 @@ namespace OpenVulkano::Scene
|
||||
bool dynamicViewport = true; // If disabled the swapchains fullscreen viewport will always be used, regardless of framebuffer or viewport
|
||||
|
||||
Shader() = default;
|
||||
~Shader() override { if (renderShader) Shader::Close(); }
|
||||
~Shader() override { Shader::Close(); }
|
||||
|
||||
Shader& AddShaderProgram(const ShaderProgram& shaderProgram)
|
||||
{
|
||||
@@ -165,14 +165,14 @@ namespace OpenVulkano::Scene
|
||||
|
||||
void Close() override
|
||||
{
|
||||
renderShader->Close();
|
||||
renderShader = nullptr;
|
||||
if (HasRenderResource())
|
||||
GetRenderResource().Release();
|
||||
}
|
||||
|
||||
private:
|
||||
void CheckShaderInitState() const
|
||||
{
|
||||
if (renderShader) throw std::runtime_error("Shader already initialized!");
|
||||
if (HasRenderResource()) throw std::runtime_error("Shader already initialized!");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user