sandbox
Loading...
Searching...
No Matches
vertex_input_description.hpp
1#ifndef LIBSBX_GRAPHICS_PIPELINE_VERTEX_INPUT_HPP_
2#define LIBSBX_GRAPHICS_PIPELINE_VERTEX_INPUT_HPP_
3
4#include <vector>
5
6#include <vulkan/vulkan.hpp>
7
8namespace sbx::graphics {
9
11 std::vector<VkVertexInputBindingDescription> binding_descriptions;
12 std::vector<VkVertexInputAttributeDescription> attribute_descriptions;
13}; // struct vertex_input
14
15template<typename Vertex>
17 static auto description() -> vertex_input_description;
18}; // struct vertex_input
19
20template<typename Type>
21concept vertex = requires {
22 { vertex_input<Type>::description() } -> std::same_as<vertex_input_description>;
23};
24
25struct empty_vertex { };
26
27constexpr auto operator==([[maybe_unused]] const empty_vertex& lhs, [[maybe_unused]] const empty_vertex& rhs) noexcept -> bool {
28 return true;
29}
30
31} // namespace sbx::graphics
32
33template<>
35 static auto description() -> sbx::graphics::vertex_input_description {
37 }
38}; // struct sbx::graphics::vertex_input<sbx::models::vertex3d>
39
40template<>
41struct std::hash<sbx::graphics::empty_vertex> {
42 auto operator()([[maybe_unused]] const sbx::graphics::empty_vertex& vertex) const noexcept -> std::size_t {
43 return 0u;
44 }
45}; // struct std::hash<vertex3d>
46
47#endif // LIBSBX_GRAPHICS_PIPELINE_VERTEX_INPUT_HPP_
Definition: vertex_input_description.hpp:25
Definition: vertex_input_description.hpp:10
Definition: vertex_input_description.hpp:16