Vulkan: Replace ShaderBinding& by ShaderBindingPtr

This commit is contained in:
Lynix
2020-04-06 21:13:59 +02:00
parent f443bec6bc
commit ac8b908079
10 changed files with 171 additions and 41 deletions

View File

@@ -7,8 +7,10 @@
#ifndef NAZARA_RENDERPIPELINELAYOUT_HPP
#define NAZARA_RENDERPIPELINELAYOUT_HPP
#include <Nazara/Renderer/Config.hpp>
#include <Nazara/Core/MovablePtr.hpp>
#include <Nazara/Renderer/Enums.hpp>
#include <Nazara/Renderer/ShaderBinding.hpp>
#include <memory>
#include <string>
#include <vector>
@@ -27,15 +29,13 @@ namespace Nz
std::vector<Binding> bindings;
};
class ShaderBinding;
class NAZARA_RENDERER_API RenderPipelineLayout
{
public:
RenderPipelineLayout() = default;
virtual ~RenderPipelineLayout();
virtual ShaderBinding& AllocateShaderBinding() = 0;
virtual ShaderBindingPtr AllocateShaderBinding() = 0;
};
}

View File

@@ -9,16 +9,23 @@
#include <Nazara/Prerequisites.hpp>
#include <Nazara/Renderer/Config.hpp>
#include <memory>
#include <variant>
namespace Nz
{
class AbstractBuffer;
class ShaderBinding;
class ShaderBindingDeleter;
class Texture;
class TextureSampler;
using ShaderBindingPtr = std::unique_ptr<ShaderBinding, ShaderBindingDeleter>;
class NAZARA_RENDERER_API ShaderBinding
{
friend ShaderBindingDeleter;
public:
struct Binding;
@@ -47,9 +54,17 @@ namespace Nz
};
protected:
virtual void Release() = 0;
ShaderBinding(const ShaderBinding&) = delete;
ShaderBinding(ShaderBinding&&) = default;
};
class ShaderBindingDeleter
{
public:
inline void operator()(ShaderBinding* binding);
};
}
#include <Nazara/Renderer/ShaderBinding.inl>

View File

@@ -7,6 +7,10 @@
namespace Nz
{
inline void ShaderBindingDeleter::operator()(ShaderBinding* binding)
{
binding->Release();
}
}
#include <Nazara/Renderer/DebugOff.hpp>