§ Использование

Здесь можно сразу скачать шаблон mingw SDL2 для Windows
Зависимости:
  • Должен быть установлен MinGW32/64
  • Файл должен идти с SDL2.dll
Если потребуется запускать без установленного mingw:
  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
Ссылка на установку MinGW
Ссылка на установку SDL2
Необходимо выбрать SDL2-devel-2.0.20-mingw.tar.gz (MinGW 32/64-bit)
Из папки с i686 сделать распаковку в c:\MinGW
Не забыть прописать новые path=c:\MinGW\bin

§ Код

1#define SDL_MAIN_HANDLED
2#include <SDL2/SDL.h>
3
4#include <math.h>
5#include "lib.cc"
6
7int cursor = 0;
8
9// Объявление
10SDL_AudioSpec sdl_audio = {44100, AUDIO_U8, 2, 0, 2048};
11
12// Обработчик
13void audio_callback(void *data, unsigned char *stream, int len)
14{
15    for (int i = 0; i < len; i += 2) {
16
17        float v1 = sin((float)cursor*0.020)*31. + 127;
18        float v2 = sin((float)cursor*0.021)*31. + 127;
19
20        stream[i]   = v1;
21        stream[i+1] = v2;
22
23        cursor += 1;
24    }
25}
26
27// Главная работа с окном и данными
28int main (int argc, char** args) {
29
30    lib* app = new lib(320, 180, 2, 50);
31
32    // Инициализировать аудио
33    // --------------------------------------
34
35    sdl_audio.callback = audio_callback;
36    SDL_OpenAudio(&sdl_audio, 0);
37    SDL_PauseAudio(0);
38
39    // --------------------------------------
40    while (app->handler()) {
41
42        int kbcode = app->get_kbcode();
43        if (kbcode == SDL_SCANCODE_ESCAPE) break;
44
45        for (int y = 0; y < 180; y++)
46        for (int x = 0; x < 320; x++) {
47            app->pset(x, y, x*y + app->frameid());
48        }
49
50        app->line(0,0,320,180,0xffffff);
51        app->circle(160,90,50,0xffff00);
52        app->circlef(160,90,25,0x00ff00);
53        app->update();
54    }
55    // --------------------------------------
56
57    return 0;
58};