class hiro::draw::PrimitiveDatabase

Overview

Database of common mesh primitives. Automatically manages OpenGL resources. More…

#include <PrimitiveDatabase.h>

class PrimitiveDatabase {
public:
    // construction

    PrimitiveDatabase(const hiro::draw::PrimitiveDatabase&);

    // methods

    void Draw(const hiro::draw::PrimitiveName primitive) const;
    void Draw(const hiro::draw::GeometryName geom) const;
    void DrawInstanced(uint32_t count, const hiro::draw::PrimitiveName primitive) const;
    void DrawInstanced(uint32_t count, const hiro::draw::GeometryName geom) const;
    const glw::PArrayObject& Get(const hiro::draw::PrimitiveName primitive) const;
    const hiro::draw::Geometry& GetGeometry(const hiro::draw::GeometryName geom) const;
    void Free();
    static hiro::draw::PrimitiveDatabase& GetSingleton();
    static glw::PArrayObject GenerateUvSphere(float radius, uint32_t smoothness = 8);
    static glw::PArrayObject GeneratePlane(const glm::vec3& position, float sizing, geom::Axis perpandicular_to);

private:
    // construction

    ~PrimitiveDatabase();
};

Detailed Documentation

Database of common mesh primitives. Automatically manages OpenGL resources.

Methods

void Draw(const hiro::draw::PrimitiveName primitive) const

Request single draw call of a specified primitive.

void Draw(const hiro::draw::GeometryName geom) const

Request single draw call of a specified geometry.

void DrawInstanced(uint32_t count, const hiro::draw::PrimitiveName primitive) const

Request instanced draw call of a specified primitive.

void DrawInstanced(uint32_t count, const hiro::draw::GeometryName geom) const

Request instanced draw call of a specified geometry.

const glw::PArrayObject& Get(const hiro::draw::PrimitiveName primitive) const

Request pointer to buffer object of primitive with specified name.

const hiro::draw::Geometry& GetGeometry(const hiro::draw::GeometryName geom) const

Request pointer to geometry object with specified name.

void Free()

Releases all allocated resources from video memory.

static glw::PArrayObject GenerateUvSphere(float radius, uint32_t smoothness = 8)

Generates sphere with defined radius. Smoothness parameter influences number of sphere segments.

static glw::PArrayObject GeneratePlane(const glm::vec3& position, float sizing, geom::Axis perpandicular_to)

Generates plane at position, with specified size, perpendicular to specified axis.