44 lines
924 B
C++
44 lines
924 B
C++
/*
|
|
* Little Vulkan Engine Pipeline class
|
|
*
|
|
* Copyright (C) 2020 by Blurrypiano - https://github.com/blurrypiano/littleVulkanEngine
|
|
*
|
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "lve_device.hpp"
|
|
#include "lve_swap_chain.hpp"
|
|
|
|
// libs
|
|
#include <vulkan/vulkan.h>
|
|
|
|
// std
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace lve {
|
|
|
|
class LvePipeline {
|
|
public:
|
|
LvePipeline(std::string filePrefix, LveDevice& device, LveSwapChain& swapChain);
|
|
~LvePipeline();
|
|
void bind(VkCommandBuffer commandBuffer);
|
|
|
|
private:
|
|
static std::vector<char> readFile(const std::string& filename);
|
|
|
|
void createGraphicsPipeline();
|
|
VkShaderModule createShaderModule(const std::vector<char>& code);
|
|
|
|
std::string filePrefix_;
|
|
LveDevice& device_;
|
|
LveSwapChain& swapChain_;
|
|
|
|
VkPipelineLayout pipelineLayout_;
|
|
VkPipeline graphicsPipeline_;
|
|
};
|
|
|
|
} // namespace lve
|