pleascach/Renderer/VertexBuffer.hpp
connellpaxton c4c796c98e Fixed pipeline and shaders.
Can now view 3D objects
2024-01-26 14:14:25 -05:00

42 lines
1.0 KiB
C++

#include <Memory/Buffer.hpp>
#include <memory>
#include <glm/glm.hpp>
struct Vertex {
glm::vec3 coord;
glm::vec2 tex_coord;
};
struct VertexBuffer {
std::unique_ptr<Buffer> buffer;
VertexBuffer(vk::PhysicalDevice phys_dev, vk::Device dev, size_t n_vertices);
void upload(const std::vector<Vertex>& data);
inline vk::VertexInputBindingDescription binding(uint32_t binding, vk::ShaderStageFlags stages = vk::ShaderStageFlagBits::eVertex) const {
return vk::VertexInputBindingDescription {
.binding = binding,
.stride = sizeof(Vertex),
.inputRate = vk::VertexInputRate::eVertex,
};
}
inline std::vector<vk::VertexInputAttributeDescription> attrs(uint32_t binding) const {
return std::vector<vk::VertexInputAttributeDescription> {
{
.location = 0,
.binding = binding,
.format = vk::Format::eR32G32B32Sfloat,
.offset = offsetof(Vertex, coord),
}, {
.location = 1,
.binding = binding,
.format = vk::Format::eR32G32Sfloat,
.offset = offsetof(Vertex, tex_coord),
}
};
}
};