ombra-0.2.2.0: Render engine.

Safe HaskellNone
LanguageHaskell2010

Graphics.Rendering.Ombra.Geometry

Contents

Synopsis

Documentation

data Geometry is Source #

A set of attributes and indices.

Instances

Eq (Geometry is) Source # 

Methods

(==) :: Geometry is -> Geometry is -> Bool #

(/=) :: Geometry is -> Geometry is -> Bool #

Hashable (Geometry is) Source # 

Methods

hashWithSalt :: Int -> Geometry is -> Int #

hash :: Geometry is -> Int #

data Vertex is where Source #

A list of the attributes of a vertex.

For instance: Attr Position3 p :~ Attr UV u :~ Attr Normal3 n

Constructors

Attr :: (Hashable (CPU S i), Attribute S i) => (a -> i) -> CPU S i -> Vertex '[i] 
(:~) :: Vertex '[i] -> Vertex is -> Vertex (i ': is) infixr 5 

Instances

Hashable (Vertex is) Source # 

Methods

hashWithSalt :: Int -> Vertex is -> Int #

hash :: Vertex is -> Int #

data Triangle a Source #

Constructors

Triangle a a a 

Instances

Functor Triangle Source # 

Methods

fmap :: (a -> b) -> Triangle a -> Triangle b #

(<$) :: a -> Triangle b -> Triangle a #

mkGeometry :: (GLES, Attributes is) => [Triangle (Vertex is)] -> Geometry is Source #

Create a generic Geometry.

mkGeometryInd :: (GLES, Attributes is) => [Vertex is] -> [Triangle Word16] -> Geometry is Source #

Create a Geometry using a list of indices to a list of vertices. This is faster than mkGeometry.

removeAttribute Source #

Arguments

:: (RemoveAttr i is is', GLES) 
=> (a -> i)

Attribute constructor (or any other function with that type).

-> Geometry is 
-> Geometry is' 

Remove an attribute from a geometry.

2D and 3D geometries

type Geometry2D = '[Position2, UV] Source #

A 2D geometry.

type Geometry3D = '[Position3, UV, Normal3] Source #

A 3D geometry.

positionOnly :: Geometry Geometry3D -> Geometry '[Position3] Source #

Remove the UV and Normal3 attributes from a 3D Geometry.

mkGeometry2D Source #

Arguments

:: GLES 
=> [Triangle (Vec2, Vec2)]

(Position, Texture UV coordinates)

-> Geometry Geometry2D 

Create a 2D Geometry.

mkGeometry3D Source #

Arguments

:: GLES 
=> [Triangle (Vec3, Vec2, Vec3)]

(Position, UV, Normal)

-> Geometry Geometry3D 

Create a 3D Geometry.

mkGeometry2D' :: (GLES, Attributes (Append is Geometry2D)) => [Triangle (Vertex is, Vec2, Vec2)] -> Geometry (Append is Geometry2D) Source #

Create an extended 2D Geometry.

mkGeometry3D' :: (GLES, Attributes (Append is Geometry3D)) => [Triangle (Vertex is, Vec3, Vec2, Vec3)] -> Geometry (Append is Geometry3D) Source #

Create an extended 3D Geometry.

mkGeometry2DInd :: GLES => [(Vec2, Vec2)] -> [Triangle Word16] -> Geometry Geometry2D Source #

Create a 2D Geometry using a list of indices.

mkGeometry3DInd :: GLES => [(Vec3, Vec2, Vec3)] -> [Triangle Word16] -> Geometry Geometry3D Source #

Create a 3D Geometry using a list of indices.

mkGeometry2DInd' :: (GLES, Attributes (Append is Geometry2D)) => [(Vertex is, Vec2, Vec2)] -> [Triangle Word16] -> Geometry (Append is Geometry2D) Source #

Create an extended 2D Geometry using a list of indices.

mkGeometry3DInd' :: (GLES, Attributes (Append is Geometry3D)) => [(Vertex is, Vec3, Vec2, Vec3)] -> [Triangle Word16] -> Geometry (Append is Geometry3D) Source #

Create an extended 3D Geometry using a list of indices.