Version 54 (modified by 12 years ago) (diff) | ,
---|
Gloss
Gloss hides the pain of drawing simple vector graphics behind a nice data type and a few display functions. Gloss uses OpenGL and GLUT under the hood, but you won't have to worry about any of that. Get something cool on the screen in under 10 minutes.
Gloss is a fork and cleanup of ANUPlot, which was used for teaching first year computer science at the ANU some time ago. Its main goal is to allow total beginners to get something working with a minimum of fuss.
Download
From Hackage
With cabal
If you have cabal installed you should be able to do:
cabal update cabal install gloss-examples gloss-styrene
From the darcs repo
The source repos are at http://code.ouroborus.net/gloss
darcs get http://code.ouroborus.net/gloss/gloss-stable cd gloss-stable cd gloss cabal install
Then again for the examples
directory in that same repo.
Frequently Asked Questions (FAQ)
Q: Why doesn't the lastest version of Gloss build with the Haskell Platform?
A: Probably because the Haskell Platform (HP) doesn't use the latest version of GHC. The gloss-examples package depends on repa via the gloss-raster package. Repa itself is tightly coupled to a particular version of GHC because it depends on specific properties of the GHC simplifier for good performance. When the HP does not use the latest GHC we provide a specific Gloss package for it, whose API should be identical to the most recent version. For the Haskell Platform 2012.04 you should use gloss-1.7.7.201204.1.
Q: Gloss freezes in ghci
. It tries to draw the window but I don't get a picture and must kill the process.
A0: Upgrade to at least GHC 7.4
A1: Start ghci
with -fno-ghci-sandbox
. This is because OpenGL uses thread local state, which doesn't work when the running program is in a different thread.
A2: Try installing gloss to use the GLFW window manager interface instead of GLUT: cabal install gloss --flags="GLFW -GLUT"
Q: On Windows, when I try to run a gloss program it says user error (unknown GLUT entry glutInit)
.
A1: You need to install glut32.dll
. Copy it into \Windows\System32
(for 32-bit installs) or \Windows\SysWOW64
(for 64-bit installs). Alternatively, you can just copy it into the same directory as the Main.exe
executable you are trying to run.
Q: Animations seem jerky.
A: Make sure you're compiling with -O2 -threaded
. Without the threaded runtime, the code that manages the frame rate will behave badly. This is because GHC takes too long to reschedule the gloss process after the sleep timer has expired. With the threaded runtime, most simple animations should run at about 100fps, which is our internal frame-rate cap.
Q: The window doesn't reshape properly under Xmonad.
A: Use the GLFW window manager interface instead, or prod the Xmonad people about it. This is probably an incompatibility between Xmonad and GLUT, but the main Gloss developer doesn't use Xmonad.
Further Information
To report bugs or request features, post in the haskell-gloss Google group.
We're also interested in cool examples you come up with. Contributed examples can be added to the gloss-examples package and posted on this page.
To get an account on the trac, send email to trac@ouroborus.net
Active Related Projects
- diagrams a Domain Specific Language for drawing 2D graphics.
- craftwerk a graphics library with TikZ output.
Examples
These are some of the examples included in the gloss-examples package:
Hello | Lifespan | Styrene | Tree | Clock | Zen |
code result | code result | code result | code result | code result | code video |
Attachments (6)
- gloss-hello-thumb.png (1005 bytes) - added by 15 years ago.
- gloss-lifespan-thumb.png (16.6 KB) - added by 15 years ago.
- gloss-styrene-thumb.png (5.0 KB) - added by 15 years ago.
- gloss-tree-thumb.png (9.3 KB) - added by 15 years ago.
- gloss-clock-thumb.png (8.8 KB) - added by 15 years ago.
- gloss-zen-thumb.png (11.2 KB) - added by 15 years ago.
Download all attachments as: .zip