Windows 7 Ultimate 64Bit、CodeBlocks 16.01 を使用しています。私は自分の OpenGL 大学プロジェクトに取り組んでいます。プレーヤーが「スペースバー」キーを使用して発砲したときに銃の効果音を追加しようとしています。
サウンドは、コンソール プロジェクトまたは空のプロジェクトを作成した場合にのみ機能し、サウンドは問題なく再生されます。リンクする必要があるライブラリ「winmm.lib」を認識しており、CONSOLE プロジェクトとして問題なく動作します。このためのコード。
#include <iostream>
#include <windows.h>
#include <mmsystem.h>
using namespace std;
int main()
{
PlaySound("shotgun.wav",NULL,SND_SYNC);
return 0;
}
Glut Project でこのコードを使用すると問題が発生します。「shotgun.wav」を再生する代わりに、「デフォルト ビープ音」と呼ばれる Windows システムのサウンドの 1 つが再生されます。射撃ボタン「スペースバー」が押されたときです。サウンドが完了するまでゲームが数秒間フリーズしていましたが、上記の行を次の行に置き換えることでこの問題を修正しました。
PlaySound(TEXT("shotgun.wav"), NULL, SND_FILENAME | SND_ASYNC);
もうフリーズしませんが、まだ、shotgun.wav の代わりにその Windows システム サウンドを再生し続けます。.wav ファイルはプロジェクト内にあります。適切な場所にあると確信しています。これが私のGlutプロジェクトからのシュートコードのサンプルです(関連するコードのみをコピーしました):
void Keys(unsigned char key, int x, int y) {
key = tolower(key); //Just in case CAPS LOCK is ON.
if(key==27)
exit(0); //Escape key, Exit the game
switch(key){
case ' ': //SPACE BAR
/* some code here */
PlaySound(TEXT("shotgun.wav"), NULL, SND_FILENAME | SND_ASYNC);
break; //.....Code continues to the next case....
銃の効果音を強制するには、Windows のサウンド設定と「システム サウンドの変更」に移動する必要がありました。そしてワラ!それは働いていた。しかし、もちろん、これは私が望んでいるものではありません。明らかにこれは私の PC でしか機能せず、私たちはそれを望んでいません。