module Graphics.LambdaCube.VertexIndexData where

import Graphics.LambdaCube.HardwareIndexBuffer
import Graphics.LambdaCube.HardwareVertexBuffer

data HardwareVertexBuffer vb => VertexData vb
    = VertexData
    { vdVertexDeclaration   :: VertexDeclaration        -- ^ Declaration of the vertex to be used in this operation. remarks Note that this is created for you on construction.
    , vdVertexBufferBinding :: VertexBufferBinding vb   -- ^ The vertex buffer bindings to be used. remarks Note that this is created for you on construction.
    , vdVertexStart         :: Int                      -- ^ The base vertex index to start from
    , vdVertexCount         :: Int                      -- ^ The number of vertices used in this operation
    }
    deriving (Eq,Ord)

data HardwareIndexBuffer ib => IndexData ib
    = IndexData
    { idIndexBuffer :: ib   -- ^ pointer to the HardwareIndexBuffer to use, must be specified if useIndexes = true
    , idIndexStart  :: Int  -- ^ index in the buffer to start from for this operation
    , idIndexCount  :: Int  -- ^ The number of indexes to use from the buffer
    }
    deriving (Eq,Ord)