{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
module Classes.Graphics.VertexLayout where

import qualified Graphics.Rendering.OpenGL as GL

-- internal imports

import Classes.Graphics.Bindable

class (Bindable (VertBuffer v)) => VertexLayout v where

  type VertBuffer v :: *

  layoutElements :: v -> [(GL.GLuint, GL.VertexArrayDescriptor GL.GLfloat)]

  addBuffer :: v -> VertBuffer v -> IO ()
