fwgl- FRP 2D/3D game engine

Safe HaskellNone




newtype Draw a

A monad that represents OpenGL actions with some state (DrawState).




unDraw :: StateT DrawState GL a

data DrawState

The state of the Draw monad.

data Geometry is

A set of attributes and indices.


Geometry (AttrList is) [Word16] Int 


data Mesh is where

A static or dinamic geometry.


Empty :: Mesh [] 
Cube :: Mesh Geometry3 
StaticGeom :: Geometry is -> Mesh is 
DynamicGeom :: Geometry is -> Geometry is -> Mesh is 

data Object gs is where

An object is a set of geometries associated with some uniforms. For example, if you want to draw a rotating cube, its vertices, normals, etc. would be the Geometry, the combination of the geometry and the value of the model matrix would be the Object, and the combination of the object with a Program would be the Layer. In fact, Objects are just descriptions of the actions to perform to draw something. Instead, the Element types in FWGL.Graphics.D2 and FWGL.Graphics.D3 represent managed (high level) objects, and they are ultimately converted to them.


ObjectEmpty :: Object gs is 
ObjectMesh :: Mesh is -> Object gs is 
ObjectGlobal :: (Typeable g, UniformCPU c g) => g -> Draw c -> Object gs is -> Object gs' is 
ObjectAppend :: Object gs is -> Object gs' is' -> Object gs'' is'' 

data Layer

An object associated with a program. It can also be a layer included in another.


forall oi pi og pg . (Subset oi pi, Subset og pg) => Layer (Program pg pi) (Object og oi) 
SubLayer Int Int Layer (Texture -> [Layer])