SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
VulkanShaderProgram.h
1#pragma once
2
3#include "spark/render/Shader.h"
4#include "spark/render/vk/Export.h"
5#include "spark/render/vk/VulkanShaderModule.h"
6
7namespace spark::render::vk
8{
12 class SPARK_RENDER_VK_EXPORT VulkanShaderProgram final : public ShaderProgram<VulkanShaderModule>
13 {
14 public:
20 explicit VulkanShaderProgram(const VulkanDevice& device, std::vector<std::unique_ptr<VulkanShaderModule>>&& modules);
21 ~VulkanShaderProgram() override;
22
23 VulkanShaderProgram(const VulkanShaderProgram& other) = delete;
24 VulkanShaderProgram(VulkanShaderProgram&& other) noexcept = delete;
25 VulkanShaderProgram& operator=(const VulkanShaderProgram& other) = delete;
26 VulkanShaderProgram& operator=(VulkanShaderProgram&& other) noexcept = delete;
27
29 [[nodiscard]] std::vector<const VulkanShaderModule*> shaders() const noexcept override;
30
32 [[nodiscard]] std::shared_ptr<IPipelineLayout> reflectPipelineLayout() const override;
33
34 private:
35 struct Impl;
36 std::unique_ptr<Impl> m_impl;
37 };
38}
Represents a shader program with a specific type of IShaderModule.
Definition Shader.h:77
Vulkan implementation of IGraphicsDevice.
Definition VulkanDevice.h:25
Vulkan implementation of a ShaderProgram.
Definition VulkanShaderProgram.h:13
Definition VulkanShaderProgram.cpp:110