2015-06-14 129 views
-2

當我運行我的應用程序時,音樂正在播放,但當我使用我的鍵盤或鼠標時,它停止並從頭開始播放。有什麼我可以做的,以避免停止的時刻,讓它從頭到尾循環播放,無論我用鍵盤做什麼?我使用winmm,得到所有需要的標題和鏈接庫。這裏的代碼:停止音樂OpenGL

PlaySound("audio.wav", NULL, SND_ASYNC|SND_FILENAME|SND_LOOP); 
+3

OpenGL是用於渲染圖形;你的意思是OpenAL? – Poriferous

+0

不。我正在OpenGL中創建一個應用程序,但想要添加一些音樂。 – pokszyk

+0

@pokszyk:就像已經說過的,聲音和音樂不是OpenGL的領域。 – datenwolf

回答

0

PlaySound是不是真的你想用這個功能。它的主要用途是發出短促的聲音,如錯誤通知或類似聲音。您可以針對DirectSound(Windows),CoreAudio(MacOS X),ALSA或PulseAudio¹(Linux),OSS(也包括Linux和Unix)進行編程,例如音樂或遊戲音效。

然而,由於這是一個大量的API,大多數開發人員所做的就是使用一些提供統一API的音頻框架。流行的選擇是

  • 的OpenAL(不讀書的聲音文件處理)
  • SDL/SDL_mixer(沒有內置3D音效,但可以打開最常見的音頻格式)
  • 閃存模塊(封閉源代碼,很功能豐富,流行的獨立遊戲開發者)
  • PortAudio(無音頻文件的支持,沒有3D聲音,但很適合用於製造現有的音頻架構便攜式)

1:在個人筆記上,我建議不要使用PulseAudio。 PulseAudio有一個非常好的API,它實現了很多偉大的想法,但不幸的是,我還沒有碰到一個使用PA的Linux系統,其中聲音沒有在的某些方式中被破壞。這不是PA的問題,但是音頻的整個問題非常棘手,而PulseAudio所依賴的Linux的標準音頻基礎設施(ALSA)本身也存在公平的問題。

寫入怪癖來處理ALSA的麻煩和損壞(在某些聲音硬件確實是奇怪的事情)聲音硬件是可管理的,並且可以很快得到好的結果。編寫怪癖來解決由於PA和音頻客戶端中音頻硬件損壞而導致的問題,這是一個重大的噩夢。