§ Ссылка для скачивания

Скачать готовый шаблон.
В этом шаблоне реализована лишь событийная модель, но нет поддержки звука.

§ Небольшая тестовая программа

1#include "main.h"
2
3int main(int argc, char* argv[]) {
4
5    Main app(320, 200, 2, 25);
6
7    // Нарисовать что-нибудь
8    app.block(0, 0, 320, 200, 0x80);
9    app.line(0, 0, 320, 200, 0xffff);
10    app.circlef(160, 100, 20, 0x008000);
11    app.circle(160, 100, 20, 0xffffff);
12
13    // Обработка возникшего события
14    while (int event = app.event()) {
15
16        switch (event) {
17            // Обработать событие
18        }
19    }
20
21    return 0;
22}

§ Объявление звука

1int cursor;
2
3// Объявление
4SDL_AudioSpec sdl_audio = {44100, AUDIO_U8, 2, 0, 2048};
5
6// Обработчик
7void audio_callback(void *data, unsigned char *stream, int len)
8{
9    for (int i = 0; i < len; i += 2) {
10
11        float v1 = sin((float)cursor*0.020)*31. + 127;
12        float v2 = sin((float)cursor*0.021)*31. + 127;
13
14        stream[i]   = v1;
15        stream[i+1] = v2;
16
17        cursor += 1;
18    }
19}
Вызов данной функции можно реализовать так:
1sdl_audio.callback = audio_callback;
2SDL_OpenAudio(&sdl_audio, 0);
3SDL_PauseAudio(0);