45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <glm/glm.hpp>
|
|
#include <vector>
|
|
#include <array>
|
|
#include <volk.h>
|
|
|
|
namespace buffer::vk {
|
|
|
|
struct VertexData {
|
|
glm::vec2 pos;
|
|
glm::vec3 color;
|
|
|
|
static VkVertexInputBindingDescription getBindingDescription() {
|
|
VkVertexInputBindingDescription description{};
|
|
description.binding = 0;
|
|
description.stride = sizeof(VertexData);
|
|
description.inputRate = VK_VERTEX_INPUT_RATE_VERTEX;
|
|
return description;
|
|
}
|
|
static std::array<VkVertexInputAttributeDescription, 2> getAttributeDescriptions() {
|
|
std::array<VkVertexInputAttributeDescription, 2> attributeDescriptions{};
|
|
attributeDescriptions[0].binding = 0;
|
|
attributeDescriptions[0].location = 0;
|
|
attributeDescriptions[0].format = VK_FORMAT_R32G32_SFLOAT;
|
|
attributeDescriptions[0].offset = offsetof(VertexData, pos);
|
|
attributeDescriptions[1].binding = 0;
|
|
attributeDescriptions[1].location = 1;
|
|
attributeDescriptions[1].format = VK_FORMAT_R32G32B32_SFLOAT;
|
|
attributeDescriptions[1].offset = offsetof(VertexData, color);
|
|
return attributeDescriptions;
|
|
}
|
|
};
|
|
|
|
const std::vector<VertexData> vertices = {
|
|
{{-0.5f, -0.5f}, {1.0f, 0.0f, 0.0f}},
|
|
{{0.5f, -0.5f}, {0.0f, 1.0f, 0.0f}},
|
|
{{0.5f, 0.5f}, {0.0f, 0.0f, 1.0f}},
|
|
{{-0.5f, 0.5f}, {1.0f, 1.0f, 1.0f}}
|
|
};
|
|
const std::vector<uint16_t> indices = {
|
|
0, 1, 2, 2, 3, 0
|
|
};
|
|
|
|
} |