data AB = A | B render fb choice = let rasterCtx = TriangleCtx CullNone PolygonFill NoOffset LastVertex mask = case choice of A -> V4 False True False False B -> V4 True False False False fragmentCtx = ((ColorOp NoBlending mask)) vertexShader = \((v)) -> (v, v) vertexStream = fetch "stream4" ((Attribute "position4" :: Vec 4 Float)) primitiveStream = mapPrimitives vertexShader vertexStream fragmentStream = rasterizePrimitives rasterCtx ((Smooth)) primitiveStream fragmentShader = \((v)) -> ((case choice of A -> V4 0.0 1.0 0.0 1.0 B -> V4 1.0 0.0 0.0 1.0)) frame = accumulate fragmentCtx fragmentShader fragmentStream fb in frame emptyFB = FrameBuffer ((colorImage1 (V4 0.0 0.0 1.0 1.0))) main = ScreenOut (foldl' render emptyFB [A,B])