Safe Haskell | None |
---|---|
Language | Haskell98 |
Gloss hides the pain of drawing simple vector graphics behind a nice data type and a few display functions.
Getting something on the screen is as easy as:
import Graphics.Gloss main =display
(InWindow "Nice Window" (200, 200) (10, 10))white
(Circle
80)
Once the window is open you can use the following:
* Quit
- esc-key
* Move Viewport
- arrow keys
- left-click drag
* Zoom Viewport
- page up/down-keys
- control-left-click drag
- right-click drag
- mouse wheel
* Rotate Viewport
- home/end-keys
- alt-left-click drag
* Reset Viewport
r
-key
Animations can be constructed similarly using the animate
.
If you want to run a simulation based around finite time steps then try
simulate
.
If you want to manage your own key/mouse events then use play
.
Gloss uses OpenGL under the hood, but you don't have to worry about any of that.
Gloss programs should be compiled with -threaded
, otherwise the GHC runtime
will limit the frame-rate to around 20Hz.
To build gloss using the GLFW window manager instead of GLUT use
cabal install gloss --flags="GLFW -GLUT"
Release Notes: For 1.11.1: Thanks to Lars Wyssard * Use default display resolution in full-screen mode. For 1.10.1: * Gloss no longer consumes CPU time when displaying static pictures. * Added displayIO wrapper for mostly static pictures, eg when plotting graphs generated from infrequently updated files. * Allow viewport to be scaled with control-left-click drag. * Rotation of viewport changed to alt-left-click drag. * Preserve current colour when rendering bitmpaps. * Changed to proper sum-of-squares colour mixing, rather than naive addition of components which was causing mixed colours to be too dark. Thanks to Thomas DuBuisson * Allow bitmaps to be specified in RGBA byte order as well as ABGR. Thanks to Gabriel Gonzalez * Package definitions for building with Stack.
For more information, check out http://gloss.ouroborus.net.
- module Graphics.Gloss.Data.Picture
- module Graphics.Gloss.Data.Color
- module Graphics.Gloss.Data.Bitmap
- data Display
- display :: Display -> Color -> Picture -> IO ()
- animate :: Display -> Color -> (Float -> Picture) -> IO ()
- simulate :: Display -> Color -> Int -> model -> (model -> Picture) -> (ViewPort -> Float -> model -> model) -> IO ()
- play :: Display -> Color -> Int -> world -> (world -> Picture) -> (Event -> world -> world) -> (Float -> world -> world) -> IO ()
Documentation
module Graphics.Gloss.Data.Picture
module Graphics.Gloss.Data.Color
module Graphics.Gloss.Data.Bitmap
Describes how Gloss should display its output.
Open a new window and display the given picture.
:: Display | Display mode. |
-> Color | Background color. |
-> (Float -> Picture) | Function to produce the next frame of animation. It is passed the time in seconds since the program started. |
-> IO () |
Open a new window and display the given animation.
Once the window is open you can use the same commands as with display
.
:: Display | Display mode. |
-> Color | Background color. |
-> Int | Number of simulation steps to take for each second of real time. |
-> model | The initial model. |
-> (model -> Picture) | A function to convert the model to a picture. |
-> (ViewPort -> Float -> model -> model) | A function to step the model one iteration. It is passed the current viewport and the amount of time for this simulation step (in seconds). |
-> IO () |
Run a finite-time-step simulation in a window. You decide how the model is represented, how to convert the model to a picture, and how to advance the model for each unit of time. This function does the rest.
Once the window is open you can use the same commands as with display
.
:: Display | Display mode. |
-> Color | Background color. |
-> Int | Number of simulation steps to take for each second of real time. |
-> world | The initial world. |
-> (world -> Picture) | A function to convert the world a picture. |
-> (Event -> world -> world) | A function to handle input events. |
-> (Float -> world -> world) | A function to step the world one iteration. It is passed the period of time (in seconds) needing to be advanced. |
-> IO () |
Play a game in a window. Like simulate
, but you manage your own input events.