# Simple DirectMedia Layer 3.0

This is the SDL3 wiki. SDL2 is [over here](/SDL2)!

## Try it right now!

SDL3 has [officially released](https://github.com/libsdl-org/SDL/releases) and is ready for you to start using now.

Need some motivation? Here's a list of [New Features](NewFeatures) that you can
enjoy today in SDL3! If you're coming from SDL2 check out the [2 to 3 Migration Guide](README-migration).

## What is it?

Simple DirectMedia Layer is a cross-platform development library designed to
provide low level access to audio, keyboard, mouse, joystick, and graphics
hardware via OpenGL/Direct3D/Metal/Vulkan. It is used by video playback
software, emulators, and popular games including
[Valve](https://valvesoftware.com)'s award winning catalog and many
[Humble Bundle](https://www.humblebundle.com) games.

SDL officially supports Windows, macOS, Linux, iOS, and Android, and [several other platforms](README-platforms.md).

SDL is written in C, works natively with C++, and has bindings available for
several other languages, including C#, Python, and Rust. A list of known
language bindings is [here](LanguageBindings).

SDL 3.0 (often shortened to "SDL3") is distributed under the
[zlib license](https://www.libsdl.org/license.php). This license allows you
to use SDL freely in any software.

This is the SDL wiki. SDL's main website is [libsdl.org](https://libsdl.org/).

## Getting Started

|                                                 |                                             |
| ------------------------------------------------| --------------------------------------------|
| [Source Code](SourceCode)                       | How to download the source code to SDL.     |
| [Installation](https://github.com/libsdl-org/SDL/blob/main/INSTALL.md) | How to install SDL on your platform of choice and link your program against it. |
| [API by Category](APIByCategory)                | Reference documentation for all of SDLs Subsystems can be found here. |
| [Tutorials](Tutorials)                          | Take a look at some tutorials to guide you through learning SDL. |
| [Examples](https://examples.libsdl.org/SDL3/)   | Small programs that each demonstrate a feature of the library. |
| [Demos](https://examples.libsdl.org/SDL3/demo/) | Simple but complete games and apps. |
| [Frequently Asked Questions](FAQDevelopment)    | Questions developers often ask when using SDL. |
| [SDL Communities](FAQCommunities)               | Communities you can follow to help and get help with SDL |

## API Documentation

- [API by category](APIByCategory)
- [API quick reference](QuickReference)
- [Complete API index](CategoryAPI)

## Other sources of information

- [Articles and Videos](Articles)
- [SDL 2.0 Migration Guide](README-migration)
- [READMEs](READMEs) covering more advanced topics
- [Libraries](Libraries) to extend SDL functionality
- [Forums/mailing lists](https://discourse.libsdl.org/) and of course [a Discord server](https://discord.gg/BwpFGBWsv8). Both are great places
  to keep up with the latest news, help other users out, and ask questions.

## Satellite libraries

There are other libraries that are developed by the SDL team, but aren't part of SDL itself. They are also documented on this wiki:

- [SDL_image](/SDL3_image): Load image files (bmp, gif, jpg, many others) into an SDL_Surface or SDL_Texture.
- [SDL_ttf](/SDL3_ttf): Load font files (ttf, etc) and render text with them.
- [SDL_mixer](/SDL3_mixer): Load audio files (wav, mp3, ogg, many others), mix multiple sounds, apply effects to them.
- [SDL_net](/SDL3_net): A fairly low-level wrapper over common networking tasks.

## Other stuff

We hope you find everything you are looking for and enjoy using SDL!

If anything is not addressed somewhere here, feel free to
[open an issue](https://github.com/libsdl-org/SDL/issues) or
[submit a pull request](https://github.com/libsdl-org/SDL/pulls).

**Enjoy!**


