d3d11binding-0.0.0.6: src/Graphics/D3D11Binding/Math/Vertex.hs
{-# LANGUAGE DeriveGeneric #-}
module Graphics.D3D11Binding.Math.Vertex where
import GHC.Generics (Generic)
import Data.Vect.Float
import Foreign.Storable
import Foreign.CStorable
import Graphics.D3D11Binding.Types
class Vertex vertex where
x :: vertex -> Float
x _ = 0
y :: vertex -> Float
y _ = 0
z :: vertex -> Float
z _ = 0
w :: vertex -> Float
w _ = 0
data Vertex2 = Vertex2 Float Float deriving (Generic)
instance CStorable Vertex2
instance Storable Vertex2 where
sizeOf = cSizeOf
alignment = cAlignment
poke = cPoke
peek = cPeek
instance HasSubresourceData Vertex2
instance Vertex Vertex2 where
x (Vertex2 vx _) = vx
y (Vertex2 _ vy) = vy
data Vertex3 = Vertex3 Float Float Float deriving (Generic)
instance CStorable Vertex3
instance Storable Vertex3 where
sizeOf = cSizeOf
alignment = cAlignment
poke = cPoke
peek = cPeek
instance HasSubresourceData Vertex3
instance Vertex Vertex3 where
x (Vertex3 vx _ _) = vx
y (Vertex3 _ vy _) = vy
z (Vertex3 _ _ vz) = vz
data Vertex4 = Vertex4 Float Float Float Float deriving (Generic)
instance CStorable Vertex4
instance Storable Vertex4 where
sizeOf = cSizeOf
alignment = cAlignment
poke = cPoke
peek = cPeek
instance HasSubresourceData Vertex4
instance Vertex Vertex4 where
x (Vertex4 vx _ _ _) = vx
y (Vertex4 _ vy _ _) = vy
z (Vertex4 _ _ vz _) = vz
w (Vertex4 _ _ _ vw) = vw
instance CStorable Vec4 where
cSizeOf = sizeOf
cAlignment = alignment
cPeek = peek
cPoke = poke