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