Class Mesh#

Class Documentation#

class Mesh#

Public Functions

Mesh(const std::shared_ptr<VulkanDevice> &device, vk::CommandPool transfer_command_pool, const std::vector<Vertex> &vertices, const std::vector<uint32_t> &indices, const std::vector<unsigned int> &materialIndex, const std::vector<ObjMaterial> &materials)#
Mesh()#
Mesh(const Mesh&) = delete#
Mesh &operator=(const Mesh&) = delete#
Mesh(Mesh &&other) noexcept = default#
Mesh &operator=(Mesh &&other) noexcept = default#
void cleanUp()#
inline ObjectDescription &getObjectDescription()#
inline uint32_t getVertexCount() const#
inline uint32_t getIndexCount() const#
inline vk::Buffer &getVertexBuffer()#
inline vk::Buffer &getIndexBuffer()#
inline const AABB &getBounds() const#

Object-space bounds, computed from the vertex positions at construction. Left invalid (min > max) for an empty mesh, which Kataglyphis::isVisible deliberately treats as “always visible” rather than culling something whose size is unknown.

inline void setDoubleSided(bool value)#

glTF material.doubleSided: when true this mesh must render both faces (the raster pass sets a dynamic cull mode of NONE per draw). Default false = back-face culled, matching every OBJ mesh and single-sided glTF. Set after construction by the loader, so the Mesh constructor is unchanged.

inline bool isDoubleSided() const#
inline bool hasMaskedMaterial() const#

Whether any material this mesh references is a glTF MASK material (ObjMaterial::alphaCutoff >= 0). Derived once in the constructor from the material vector the constructor already receives - unlike double_sided this needs no setter, since every loader already hands the constructor its full materials, so deriving it here can never go stale the way a loader-set flag could.

~Mesh()#