module ecs_utils.gfx.vertex;

import ecs.std;

struct Vertex 
{
    void create()
    {
        data = Mallocator.make!Data;
    }

    void bind()
    {

    }

    void enableStates()
    {
        
    }

    void attachBindings(scope Binding[] bindings)
    {
        data.bindings = Mallocator.makeArray(bindings);
    }

    enum Type
    {
        byte_r_snorm,
        byte_r_unorm,
        byte_rg_snorm,
        byte_rg_unorm,
        byte_rgb_snorm,
        byte_rgb_unorm,
        byte_rgba_snorm,
        byte_rgba_unorm,
        short_r_snorm,
        short_r_unorm,
        short_rg_snorm,
        short_rg_unorm,
        short_rgb_snorm,
        short_rgb_unorm,
        short_rgba_snorm,
        short_rgba_unorm,
        float_r,
        float_rg,
        float_rgb,
        float_rgba
    }

    struct Binding
    {
        Type type;
        uint stride;
    }

    struct Data
    {
        Binding[] bindings;
        uint size;
    }

    Data* data;
}