txt: ## dist_cpan-TIMOTIMO-SDL2-Raw.md
  # SDL2::Raw
  
  [![Build Status](https://travis-ci.org/timo/SDL2_raw-p6.svg?branch=master)](https://travis-ci.org/timo/SDL2_raw-p6) [![Build status](https://ci.appveyor.com/api/projects/status/github/timo/SDL2_raw-p6?svg=true)](https://ci.appveyor.com/project/timo/SDL2_raw-p6/branch/master)
  
  A low-sugar binding to SDL2.
  
  ## Synopsis
  
  ```
  use SDL2::Raw;
  
  die "couldn't initialize SDL2: { SDL_GetError }"
    if SDL_Init(VIDEO) != 0;
  
  my $window = SDL_CreateWindow(
      "Hello, world!",
      SDL_WINDOWPOS_CENTERED_MASK, SDL_WINDOWPOS_CENTERED_MASK,
      800, 600,
      OPENGL
  );
  my $render = SDL_CreateRenderer($window, -1, ACCELERATED +| PRESENTVSYNC);
  
  my $event = SDL_Event.new;
  
  main: loop {
      SDL_SetRenderDrawColor($render, 0, 0, 0, 0);
      SDL_RenderClear($render);
  
      while SDL_PollEvent($event) {
          if $event.type == QUIT {
              last main;
          }
      }
  
      SDL_SetRenderDrawColor($render, 255, 255, 255, 255);
      SDL_RenderFillRect($render,
          SDL_Rect.new(
              2 * min(now * 300 % 800, -now * 300 % 800),
              2 * min(now * 470 % 600, -now * 470 % 600),
          sin(3 * now) * 50 + 80, cos(4 * now) * 50 + 60));
  
      SDL_RenderPresent($render);
  }
  SDL_Quit;
  
  ```
  
  ## Status
  
  There's a bunch of functions and structs already covered, but there's also a whole bunch of things I haven't touched at all. If you need any specific part of the API covered, feel free to open a ticket on github or even a pull request!
  
  ## Installation
  
  | Platform | Installation |
  | --- | --- |
  | Ubuntu 14.04 and above | `sudo apt install libsdl2-dev` |
  | Fedora 25 and above | `yum install SDL2-devel` |
  | Arch Linux | `pacman -S sdl2` |
  | Gentoo | `emerge -av libsdl2` |
  | macOS | `brew install sdl2 pkg-config` |
  | Windows | <https://libsdl.org/download-2.0.php> |
  
  ## Examples
  
  ### Snake
  
  ![screenshots/snake-screenshot.png](screenshots/snake-screenshot.png)
  
  A simple Snake game. Control it with the arrow keys, guide your snake to eat the red circles, and avoid running into your tail.
  
  This code uses `Cairo` to create the images for the snake's body and tail.
  
  ### Particles
  
  ![screenshots/particles-screenshot.png](screenshots/particles-screenshot.png)
  
  A very simple particle system that spews white pixels from a central point that get pulled down by gravity and bounce on the floor.
  
  ### Shooter
  
  ![screenshots/shooter-screenshot.png](screenshots/shooter-screenshot.png)
  
  A more complicated game. Control it with the arrow keys and hold the spacebar to fire.
  
  The code also uses `Cairo` to render the player's spaceship and the enemy spaceships. In generating the starfields it shows how to render to a texture with `SDL2`.
  
  ### White Noise
  
  Just draws random white and black pixels to a texture and displays it.
  
  ![screenshots/white-noise-screenshot.png](screenshots/white-noise-screenshot.png)
  