Simple Directmedia Layer
at main 67 lines 2.5 kB view raw view rendered
1# Examples 2 3## What is this? 4 5In here are a collection of standalone SDL application examples. Unless 6otherwise stated, they should work on all supported platforms out of the box. 7If they don't [please file a bug to let us know](https://github.com/libsdl-org/SDL/issues/new). 8 9 10## What is this SDL_AppIterate thing? 11 12SDL can optionally build apps as a collection of callbacks instead of the 13usual program structure that starts and ends in a function called `main`. 14The examples use this format for two reasons. 15 16First, it allows the examples to work when built as web applications without 17a pile of ugly `#ifdef`s, and all of these examples are published on the web 18at [examples.libsdl.org](https://examples.libsdl.org/), so you can easily see 19them in action. 20 21Second, it's example code! The callbacks let us cleanly break the program up 22into the four logical pieces most apps care about: 23 24- Program startup 25- Event handling 26- What the program actually does in a single frame 27- Program shutdown 28 29A detailed technical explanation of these callbacks is in 30docs/README-main-functions.md (or view that page on the web on 31[the wiki](https://wiki.libsdl.org/SDL3/README/main-functions#main-callbacks-in-sdl3)). 32 33 34## I would like to build and run these examples myself. 35 36When you build SDL with CMake, you can add `-DSDL_EXAMPLES=On` to the 37CMake command line. When you build SDL, these examples will be built with it. 38 39But most of these can just be built as a single .c file, as long as you point 40your compiler at SDL3's headers and link against SDL. 41 42 43## What is the license on the example code? Can I paste this into my project? 44 45All code in the examples directory is considered public domain! You can do 46anything you like with it, including copy/paste it into your closed-source 47project, sell it, and pretend you wrote it yourself. We do not require you to 48give us credit for this code (but we always appreciate if you do!). 49 50This is only true for the examples directory. The rest of SDL falls under the 51[zlib license](https://github.com/libsdl-org/SDL/blob/main/LICENSE.txt). 52 53 54## What is template.html and highlight-plugin.lua in this directory? 55 56This is what [examples.libsdl.org](https://examples.libsdl.org/) uses when 57generating the web versions of these example programs. You can ignore this, 58unless you are improving it, in which case we definitely would love to hear 59from you! 60 61 62## What is template.c in this directory? 63 64If writing new examples, this is the skeleton code we start from, to keep 65everything consistent. You can ignore it. 66 67