SDL Benchmark Sound

0

Я выполняю контрольный проект между двумя графическими библиотеками (SDL, SFML) для моего последнего проекта cs. Я почти закончил его, но когда я сравниваю скорость воспроизведения звуков, он всегда возвращает время 0, независимо от того, сколько циклов он делает. Вы знаете, что не так с моим кодом? Звук действительно играет, однако, вероятно, я должен сделать какой-то другой алгоритм.

void playSound()
{
    Mix_PlayChannel(-1, sound, 0);
}

void soundBenchmark(int numOfCycles)
{
    int time = SDL_GetTicks(), timeRequired;
    for(int i = 0; i < numOfCycles; i++) playSound();
    timeRequired = SDL_GetTicks() - time;
    cout << "Time required for " << numOfCycles << " cycles: " <<  timeRequired << " seconds.\n";
}
Теги:
audio
sdl
benchmarking

1 ответ

3
Лучший ответ

Функция Mix_PlayChannel() не блокирует выполнение кода. Функция просто отправляет данные на звуковую карту (или ее эквивалент) и возвращается.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню