module PointsRendering (
display,
Point
) where
import Graphics.UI.GLUT
import Graphics.Rendering.OpenGL
import Random
type Point = (GLfloat, GLfloat, GLfloat)
makeVertx
= mapM_ (\
(x
,y
,z
) -> vertex
$ Vertex3 x y z
)
getRand = getStdRandom (randomR (0,1))
renderAs
:: PrimitiveMode
-> [Point
] -> IO ()renderAs mode points = renderPrimitive mode (makeVertx points)
renderInWindow displayFunction = do
(progName,_) <- getArgsAndInitialize
createWindow "Primitive shapes"
displayCallback $= displayFunction
mainLoop
displayPoints
:: PrimitiveMode
-> [Point
] -> IO ()displayPoints mode points = do
renderAs mode points
flush
display
:: PrimitiveMode
-> [Point
] -> IO ()display mode points = renderInWindow (display' mode points)
display' :: PrimitiveMode
-> [Point
] -> IO () display' mode points = do
clear [ColorBuffer]
currentColor $= Color4 0 0.3 1 1
displayPoints mode points
bW9kdWxlIFBvaW50c1JlbmRlcmluZyAoCiAgICBkaXNwbGF5LAogICAgUG9pbnQKKSB3aGVyZQogCmltcG9ydCBHcmFwaGljcy5VSS5HTFVUCmltcG9ydCBHcmFwaGljcy5SZW5kZXJpbmcuT3BlbkdMCmltcG9ydCBSYW5kb20KIAogCnR5cGUgUG9pbnQgPSAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCkKIAogCm1ha2VWZXJ0eCA9IG1hcE1fIChcKHgseSx6KSAtPiB2ZXJ0ZXggJCBWZXJ0ZXgzIHggeSB6KQogCmdldFJhbmQgOjogSU8gRmxvYXQKZ2V0UmFuZCA9IGdldFN0ZFJhbmRvbSAocmFuZG9tUiAoMCwxKSkKIAogCnJlbmRlckFzIDo6IFByaW1pdGl2ZU1vZGUgLT4gW1BvaW50XSAtPiBJTyAoKQpyZW5kZXJBcyBtb2RlIHBvaW50cyA9IHJlbmRlclByaW1pdGl2ZSBtb2RlIChtYWtlVmVydHggcG9pbnRzKQogCnJlbmRlckluV2luZG93IGRpc3BsYXlGdW5jdGlvbiA9IGRvCiAgICAocHJvZ05hbWUsXykgPC0gZ2V0QXJnc0FuZEluaXRpYWxpemUKICAgIGNyZWF0ZVdpbmRvdyAiUHJpbWl0aXZlIHNoYXBlcyIKICAgIGRpc3BsYXlDYWxsYmFjayAkPSBkaXNwbGF5RnVuY3Rpb24KICAgIG1haW5Mb29wCiAKIApkaXNwbGF5UG9pbnRzIDo6IFByaW1pdGl2ZU1vZGUgLT4gW1BvaW50XSAtPiBJTyAoKQpkaXNwbGF5UG9pbnRzIG1vZGUgcG9pbnRzID0gZG8KICAgIHJlbmRlckFzIG1vZGUgcG9pbnRzCiAgICBmbHVzaAogCmRpc3BsYXkgOjogUHJpbWl0aXZlTW9kZSAtPiBbUG9pbnRdIC0+IElPICgpCmRpc3BsYXkgbW9kZSBwb2ludHMgPSByZW5kZXJJbldpbmRvdyAoZGlzcGxheScgbW9kZSBwb2ludHMpCiAKZGlzcGxheScgOjogUHJpbWl0aXZlTW9kZSAtPiBbUG9pbnRdIC0+IElPICgpCmRpc3BsYXknIG1vZGUgcG9pbnRzID0gZG8KICAgIGNsZWFyIFtDb2xvckJ1ZmZlcl0KICAgIGN1cnJlbnRDb2xvciAkPSBDb2xvcjQgMCAwLjMgMSAxCiAgICBkaXNwbGF5UG9pbnRzIG1vZGUgcG9pbnRz