Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
VKProgram.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include "Program.h"
7#include "Shader.h"
8#include <unordered_map>
9#include <vector>
10#include <vulkan/vulkan.h>
11
12class Shader;
13class VKShader;
14
15class VKProgram : public Program
16{
17public:
18 VKProgram(const Descriptor& desc);
19 virtual ~VKProgram();
20
21 std::vector<VkPipelineShaderStageCreateInfo>& getInfos();
22
23 void use() override;
24
25 void set_uniform(const std::string& name, int value) override;
26 void set_uniform(const std::string& name, float value) override;
27 void set_uniform(const std::string& name, const Vector2& value) override;
28 void set_uniform(const std::string& name, const Vector3& value) override;
29 void set_uniform(const std::string& name, const Vector4& value) override;
30 void set_uniform(const std::string& name, const Matrix4& value) override;
31
32private:
33 void add_shader(std::shared_ptr<Shader> shader);
34
35 std::unordered_map<Shader::Stage, std::shared_ptr<VKShader>> shaders_;
36 std::vector<VkPipelineShaderStageCreateInfo> infos_;
37};
着色器程序.
Definition: Program.h:21
着色器阶段.
Definition: Shader.h:20
Definition: VKProgram.h:16
Definition: VKShader.h:10
Definition: Program.h:62