Я работаю над эталонным приложением, которое будет сравнивать SFML и SDL. Одной из вещей, которые я сравниваю, является скорость воспроизведения звука. Я воспроизвожу звук много раз в цикле и вычисляю время, которое требуется. Мне нужна задержка между воспроизведением звуков, так как мне сначала нужно закончить воспроизведение звука, чтобы начать заново. Я исправил это с помощью SFML-сна, однако я не уверен, что я делаю это правильно. Вероятно, не потому, что после первой игры приложение зависает, как если бы оно было в бесконечном цикле. Мне нужно, чтобы она задерживала 1 миллисекунду, если музыка все еще играет. Не могли бы вы помочь мне?SFML - расчет спящего режима
Моих функции:
void playSound()
{
sound.setBuffer(buffer);
sound.play();
}
void soundBenchmark(int numOfCycles)
{
sf::Time delayTime = sf::milliseconds(0.01);
sf::Clock clock;
for(int i = 0; i < numOfCycles; i++)
{
playSound();
while(sound.Playing) sf::sleep(delayTime);
}
sf::Time time = clock.getElapsedTime();
cout << "Time required for " << numOfCycles << " cycles playing sound: " << time.asMilliseconds() << " milliseconds.\n";
}
Вызов функции в основном:
while(running)
{
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed)
{
window.close();
running = false;
}
}
soundBenchmark(20);
break;
}
return 0;
Что вы подразумеваете под «скоростью воспроизведения звука»? Я считаю, что «бенчмарк» очень странный и не уверен, даст ли он вам какую-либо полезную информацию ... Также имейте в виду, что события без обработки могут привести к тому, что ОС верят, что ваше приложение заморожено. – Lukas
хорошо, для обработки информации требуется много миллисекунд для обработки информации и воспроизведения. Я хочу много раз воспроизводить звук в обеих библиотеках, а затем узнать, какой из них имеет более низкое время. – Sam
Это не имеет никакого смысла? Воспроизведение звука - определенно не операция, которая имела бы важные (или даже разумные) накладные расходы при любом использовании мультимедийной библиотеки. О 'sf :: Music', он не читается один раз, а передается с диска, поэтому нет смысла. –