54 d.
layout = VertexLayout::for_meshes(60);
67 const auto* vb = std::get_if<std::vector<uint8_t>>(&vertex_variant);
68 const auto* ib = std::get_if<std::vector<uint32_t>>(&index_variant);
69 return vb && !vb->empty()
83 const auto* vb = std::get_if<std::vector<uint8_t>>(&vertex_variant);
87 return static_cast<uint32_t
>(vb->size() / layout.
stride_bytes);
95 const auto* ib = std::get_if<std::vector<uint32_t>>(&index_variant);
99 return static_cast<uint32_t
>(ib->size() / 3);
114 [[nodiscard]] std::optional<MeshAccess>
access()
const
119 return as_mesh_access(vertex_variant, index_variant, layout, submeshes);
std::optional< MeshAccess > as_mesh_access(const DataVariant &vertex_variant, const DataVariant &index_variant, const VertexLayout &layout, std::optional< RegionGroup > submeshes)
Construct a MeshAccess from two DataVariant instances.
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
uint32_t vertex_count() const noexcept
Number of vertices derived from vertex byte count and layout stride.
static MeshData empty()
Construct an empty MeshData with the canonical 60-byte mesh layout.
bool is_valid() const noexcept
True when both variants are non-empty and layout stride is set.
std::optional< RegionGroup > submeshes
DataVariant vertex_variant
vector<uint8_t>: interleaved vertex bytes
std::optional< MeshAccess > access() const
Produce a non-owning MeshAccess view over this data.
uint32_t face_count() const noexcept
Number of triangles (index count / 3).
DataVariant index_variant
vector<uint32_t>: triangle index list
Owning CPU-side representation of a loaded or generated mesh.
uint32_t stride_bytes
Total bytes per vertex (stride in Vulkan terms) e.g., 3 floats (position) + 3 floats (normal) = 24 by...
Complete description of vertex data layout in a buffer.