2#include <ossia/detail/config.hpp>
4#include <ossia/detail/small_vector.hpp>
5#include <ossia/detail/variant.hpp>
16 std::shared_ptr<void> data;
26 ossia::variant<cpu_buffer, gpu_buffer> data;
67 ossia::small_vector<buffer, 2> buffers;
68 ossia::small_vector<binding, 2> bindings;
69 ossia::small_vector<attribute, 2> attributes;
70 ossia::small_vector<input, 2> input;
72 int vertices{}, indices{};
108 std::vector<geometry> meshes;
109 int64_t dirty_index{};
111using mesh_list_ptr = std::shared_ptr<mesh_list>;
115 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1.,
119struct geometry_filter
137 int64_t dirty_index{};
140struct geometry_filter_list
142 std::vector<geometry_filter> filters;
143 int64_t dirty_index{};
145using geometry_filter_list_ptr = std::shared_ptr<geometry_filter_list>;
149 mesh_list_ptr meshes;
150 geometry_filter_list_ptr filters;
152 operator bool() const noexcept {
return meshes && filters; }
153 bool operator==(
const geometry_spec&)
const noexcept =
default;
154 bool operator<(
const geometry_spec& rhs)
const noexcept
156 return (meshes < rhs.meshes) || (meshes == rhs.meshes && filters < rhs.filters);
160struct OSSIA_EXPORT geometry_port
162 static const constexpr int which = 4;
165 dirty_transform = 0x1,
171 geometry_spec geometry;
172 transform3d transform;
176struct geometry_delay_line
178 std::vector<geometry_spec> geometries;