35 lines
601 B
C
35 lines
601 B
C
|
#pragma once
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <vector>
|
||
|
#include <string>
|
||
|
|
||
|
#include <vulkan/vulkan.h>
|
||
|
|
||
|
#include "program.h"
|
||
|
|
||
|
namespace Engine {
|
||
|
class LogicalDevice;
|
||
|
|
||
|
class Pipeline {
|
||
|
public:
|
||
|
Pipeline(const Program& program, LogicalDevice* device);
|
||
|
Pipeline(const Pipeline& other);
|
||
|
~Pipeline();
|
||
|
|
||
|
void bind(const VkCommandBuffer& buffer) const;
|
||
|
|
||
|
private:
|
||
|
void createLayout();
|
||
|
void createPipeline();
|
||
|
VkShaderModule createShaderModule(Program::ShaderType type);
|
||
|
|
||
|
private:
|
||
|
LogicalDevice* device;
|
||
|
const Program& program;
|
||
|
VkPipeline vk;
|
||
|
VkPipelineLayout layout;
|
||
|
};
|
||
|
|
||
|
}
|