0
GUIアプリケーションのバックグラウンドスレッドで曲を再生しようとしています。 std :: threadまたはSFML Threadsでこれを行う簡単な方法はありますか?SFMLを使用してバックグラウンドスレッドでサウンドを再生する簡単な方法はありますか?
私はこのためにstd :: threadを使用しようとしましたが、my_thread.join()
を呼び出すとGUIスレッドをブロックします。ここで
私が何をしたいの例です。SFMLで
#include <thread>
#include <SFML/Audio.hpp>
#include <unistd.h>
#include <iostream>
void func() {
sf::Music music;
music.openFromFile("mysong.wav");
music.play();
// if I don't have usleep here the function exits immediately
// why is that exactly???
usleep(100000000);
}
int main() {
std::thread my_thread(func);
my_thread.join();
// this is where I would process events/build windows in GUI
while(1)
std::cout << "here"; // <--- Want this to run while song plays
}
スレッドを使用する必要はありません。sf :: Soundインスタンスのためにsf :: Sound :: play()を呼び出すだけです。 –
ここで書いたことに基づいて最良の賭けはsf :: Musicを保存することですどこか(普通はクラスやオーディオマネージャー)、音楽を演奏して2番目の機能を終了させないようにします。 – Eddge
あなたはジュークボックスクラスを楽しむことができます:https://github.com/SFML/SFML/wiki/Source%3A-Jukebox –