The package itself provides a nice introduction.
SDL (Simple DirectMedia Layer) is a library for cross-platform development of interactive applications. SDL provides routines for managing windows, rendering graphics, processing sound, collecting input data, and much more. The Haskell
sdl2library provides both a high- and low-level API to interface with SDL.
For an extended hands-on tutorial there is a Haskell port of LazyFoo’s SDL lessons.
module Main where import SDL import Linear (V4(..)) import Control.Monad (unless) main :: IO () main = do initializeAll window <- createWindow "My SDL Application" defaultWindow renderer <- createRenderer window (-1) defaultRenderer appLoop renderer destroyWindow window appLoop :: Renderer -> IO () appLoop renderer = do events <- pollEvents let eventIsQPress event = case eventPayload event of KeyboardEvent keyboardEvent -> keyboardEventKeyMotion keyboardEvent == Pressed && keysymKeycode (keyboardEventKeysym keyboardEvent) == KeycodeQ _ -> False qPressed = any eventIsQPress events rendererDrawColor renderer $= V4 0 0 255 255 clear renderer present renderer unless qPressed (appLoop renderer)
- sdl2-gfx: Graphics primitives and surface functions.
- sdl2-image: Load images of various formats as SDL surfaces.
- sdl2-mixer: Multi-channel audio mixer.
- sdl2-ttf: FreeType wrapper to render text.