Я выполняю контрольный проект между двумя графическими библиотеками (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";
}
Функция Mix_PlayChannel()
не блокирует выполнение кода. Функция просто отправляет данные на звуковую карту (или ее эквивалент) и возвращается.
Вам нужно будет запомнить канал, который вы использовали с Mix_PlayChannel()
а затем периодически проверяете Mix_Playing()
, играет ли этот канал или нет, и посмотрите на время.