2013-11-25 27 views
0

我正在爲最終的cs項目在兩個圖形庫(SDL,SFML)之間做基準項目。我接近完成了,但是當我以播放聲音的速度爲基準時,無論他做了多少次循環,總是會返回花費0的時間。你知道我的代碼有什麼問題嗎?聲音實際上播放,但我應該可以做一些其他算法。SDL基準聲音

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"; 
} 

回答

3

功能Mix_PlayChannel()不阻擋代碼的執行。該功能只是將數據發送到聲卡(或等效)並返回。

您將不得不記住您使用的頻道Mix_PlayChannel(),然後定期查看Mix_Playing()該頻道是否正在播放,並查看時間。