SDL : Introduction

SDL = Simple DirectMedia Layer is a free cross-platform multi-media development API. Its used for

  • games
  • game SDKs
  • emulators
  • demos
  • multimedia applications

What can it do?


  • Set a video mode at any depth (8-bpp or greater) with optional conversion, if the video mode is not supported by the hardware.
  • Write directly to a linear graphics framebuffer.
  • Create surfaces with colorkey or alpha blending attributes.
  • Surface blits are automatically converted to the target format using optimized blitters and are hardware accelerated, when possible. MMX optimized blits are available for the x86.
  • Hardware accelerated blit and fill operations are used if supported by the hardware.


  • Events provided for:
    • Application visibility changes
    • Keyboard input
    • Mouse input
    • User-requested quit
  • Each event can be enabled or disabled with SDL_EventState().
  • Events are passed through a user-specified filter function before being posted to the internal event queue.
  • Thread-safe event queue.


  • Set audio playback of 8-bit and 16-bit audio, mono or stereo, with optional conversion if the format is not supported by the hardware.
  • Audio runs independently in a separate thread, filled via a user callback mechanism.
  • Designed for custom software audio mixers, but the example archive contains a complete audio/music output library.


CD-ROM audio

  • Complete CD audio control API



  • Simple thread creation API
  • Simple binary semaphores for synchronization



  • Get the number of milliseconds elapsed
  • Wait a specified number of milliseconds
  • Set a single periodic timer with 10ms resolution


Endian independence

  • Detect the endianness of the current system
  • Routines for fast swapping of data values
  • Read and write data of a specified endianness


What platforms does it run on?


  • Uses X11 for video display, taking advantage of XFree86 DGA extensions and new MTRR acceleration for fullscreen display.
  • Uses the OSS API for sound.
  • Threads are implemented using either the clone() system call and SysV IPC, or glibc-2.1 pthreads.


  • Two versions, one safe for all systems based on Win32 APIs, and one with higher performance, based on DirectX APIs.
  • Safe version uses GDI for video display. High performance version uses DirectDraw for video display, taking advantage of hardware acceleration if available.
  • Safe version uses waveOut APIs for sound. High performace version uses DirectSound for audio playback.


  • BWindow is used for video display.
  • BSoundPlayer API is used for sound.

Unofficial ports, ports in progress

  • Solaris, IRIX, FreeBSD
  • MacOS


Using the Simple DirectMedia Layer API

Initializing the library

SDL is composed of eight subsystems – Audio, CDROM, Event Handling, File I/O, Joystick Handling, Threading, Timers and Video. Use SDL_Init() to dynamically load and initialize the library. This function takes a set of flags corresponding to the portions you want to activate:


Use SDL_Quit() to clean up the library when you are done with it.


#include “SDL/SDL.h”  //Include SDL functions and datatypes

int main( int argc, char* args[] ) {


SDL_Quit(); //Quit SDL

return 0;


SHARE SDL : Introduction

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *