data AB = A | B render choice = let emptyFB = FrameBuffer ((colorImage1 (V4 0.0 0.0 0.4 1.0))) rasterCtx = TriangleCtx CullNone PolygonFill NoOffset LastVertex fragmentCtx = ((ColorOp NoBlending (V4 True True True True))) 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 -> v B -> V4 1.0 0.0 0.0 1.0)) frame = accumulate fragmentCtx fragmentShader fragmentStream emptyFB in ScreenOut frame data Out = Out (AB -> Output) out = Out render main = let Out o = out in o A