pleascach/Renderer/CommandBuffer.hpp
connellpaxton bd7f1ed4d3 Pipeline and shader execution is confirmed working.
Next step is to figure out how to fix the viewport to behave like I want it to.
2024-01-26 00:41:43 -05:00

46 lines
1.1 KiB
C++

#pragma once
#define VULKAN_HPP_NO_STRUCT_CONSTRUCTORS
#include <vulkan/vulkan.hpp>
#include <util/int.hpp>
struct Buffer;
struct Image;
struct GraphicsPipeline;
struct ComputePipeline;
struct VertexBuffer;
struct CommandBuffer {
CommandBuffer(vk::Device dev, u32 queue_family);
void cleanup(vk::Device dev);
/* start recording commands */
void begin();
/* copy between buffer */
void copy(vk::Buffer in, vk::Buffer out, vk::ArrayProxy<const vk::BufferCopy> regions);
/* copy buffer to image */
void copy(Buffer& in, Image& out, vk::ImageLayout layout = vk::ImageLayout::eTransferDstOptimal);
void bind(const GraphicsPipeline& pipeline);
void bind(vk::PipelineLayout layout, vk::ArrayProxy<vk::DescriptorSet> desc_sets);
void bind(const VertexBuffer& vertex_buffer, uint32_t binding = 0);
void draw(uint32_t vertex_count, uint32_t instance_count, uint32_t first_vertex = 0, uint32_t first_instance = 0);
/* stop recording commands */
void end();
void recycle();
vk::CommandBuffer command_buffer;
vk::CommandPool command_pool;
operator vk::CommandBuffer* () {
return &command_buffer;
}
};