Update shader to use new render resource system

This commit is contained in:
Georg Hagen
2024-08-21 13:33:15 +02:00
parent 3940a72084
commit b13c1c54ae
6 changed files with 26 additions and 38 deletions

View File

@@ -7,26 +7,20 @@
#pragma once
#include "IRecordable.hpp"
#include "Base/ICloseable.hpp"
#include "Scene/Shader/Shader.hpp"
#include <vulkan/vulkan.hpp>
#include <vector>
namespace OpenVulkano
{
namespace Scene
{
class Shader;
}
namespace Vulkan
{
class Context;
class IShaderOwner;
class VulkanShader final : public ICloseable, public IRecordable
class VulkanShader final : public IRenderResource<Scene::Shader>, public IRecordable
{
public:
Scene::Shader* shader = nullptr;
vk::Device device;
std::vector<vk::ShaderModule> shaderModules; // TODO manage live time somewhere else to allow sharing of shader programs
std::vector<vk::PipelineShaderStageCreateInfo> shaderStageCreateInfo;
@@ -36,17 +30,15 @@ namespace OpenVulkano
IShaderOwner* owner = nullptr;
Context* context = nullptr;
VulkanShader() = default;
VulkanShader(Context* context, Scene::Shader* shader, IShaderOwner* owner);
~VulkanShader() override;
void Init(Context* context, Scene::Shader* shader, IShaderOwner* owner);
void Resize();
void Record(VulkanDrawContext* context) override;
void Close() override;
void Release() override;
private:
void BuildPipeline();