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
8#include <libsbx/containers/static_vector.hpp>
9
10namespace sbx::graphics {
11
15}; // struct vertex_input
16
17template<typename Vertex>
19 static auto description() -> vertex_input_description;
20}; // struct vertex_input
21
22template<typename Type>
23concept vertex = requires {
24 { vertex_input<Type>::description() } -> std::same_as<vertex_input_description>;
25};
26
27struct empty_vertex { };
28
29constexpr auto operator==([[maybe_unused]] const empty_vertex& lhs, [[maybe_unused]] const empty_vertex& rhs) noexcept -> bool {
30 return true;
31}
32
33} // namespace sbx::graphics
34
35template<>
37 static auto description() -> sbx::graphics::vertex_input_description {
39 }
40}; // struct sbx::graphics::vertex_input<sbx::models::vertex3d>
41
42template<>
43struct std::hash<sbx::graphics::empty_vertex> {
44 auto operator()([[maybe_unused]] const sbx::graphics::empty_vertex& vertex) const noexcept -> std::size_t {
45 return 0u;
46 }
47}; // struct std::hash<vertex3d>
48
49#endif // LIBSBX_GRAPHICS_PIPELINE_VERTEX_INPUT_HPP_
static_vector implementation inspired by https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p08...
Definition: static_vector.hpp:24
Definition: vertex_input_description.hpp:27
Definition: vertex_input_description.hpp:12
Definition: vertex_input_description.hpp:18