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

Здесь можно сразу скачать шаблон 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

§ Код

#define SDL_MAIN_HANDLED
#include <SDL2/SDL.h>

#include <math.h>
#include "lib.cc"

int cursor = 0;

// Объявление
SDL_AudioSpec sdl_audio = {44100, AUDIO_U8, 2, 0, 2048};

// Обработчик
void audio_callback(void *data, unsigned char *stream, int len)
{
    for (int i = 0; i < len; i += 2) {

        float v1 = sin((float)cursor*0.020)*31. + 127;
        float v2 = sin((float)cursor*0.021)*31. + 127;

        stream[i]   = v1;
        stream[i+1] = v2;

        cursor += 1;
    }
}

// Главная работа с окном и данными
int main (int argc, char** args) {

    lib* app = new lib(320, 180, 2, 50);

    // Инициализировать аудио
    // --------------------------------------

    sdl_audio.callback = audio_callback;
    SDL_OpenAudio(&sdl_audio, 0);
    SDL_PauseAudio(0);

    // --------------------------------------
    while (app->handler()) {

        int kbcode = app->get_kbcode();
        if (kbcode == SDL_SCANCODE_ESCAPE) break;

        for (int y = 0; y < 180; y++)
        for (int x = 0; x < 320; x++) {
            app->pset(x, y, x*y + app->frameid());
        }

        app->line(0,0,320,180,0xffffff);
        app->circle(160,90,50,0xffff00);
        app->circlef(160,90,25,0x00ff00);
        app->update();
    }
    // --------------------------------------

    return 0;
};