2020年5月12日 星期二

圖學筆記-11

1.音效(.wav)

在GLUT專案將音效加入


#include <stdio.h>
#include <windows.h> ///為了一些定義DWORD
#include <mmsystem.h>///為了PlaySoundA()

int main()
{
    PlaySoundA("bass.wav",NULL,SND_SYNC);
    printf("Hello World\n");
}









2.用滑鼠點擊播放音效


#include <GL/glut.h>
#include <windows.h>
#include <mmsystem.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN)PlaySoundA("bass.wav",NULL,SND_SYNC);///當滑鼠按下去時,播放音效
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("sound");
    glutMouseFunc(mouse);
    glutDisplayFunc(display);
    glutMainLoop();
}







3.播放BGM


///先匯入
#include "CMP3_MCI.h"
///宣告一個物件變數
CMP3_MCI myMP3;
///放在main裡
    myMP3.Load("bgm.mp3");
    myMP3.Play();






4.SND_ASYNC不等、不同步

if(state==GLUT_DOWN)PlaySoundA("cymbal.wav",NULL,SND_ASYNC);///改成不用等音效播完才播




5.更改目錄






在執行過後,log會寫檔案位置,可以看到他使用在專案裡的檔案



6.鋼琴


#include <GL/glut.h>
#include <windows.h>
#include <mmsystem.h>
#include "CMP3_MCI.h"

CMP3_MCI myMP3;
CMP3_MCI Do,Re,Mi,Fa,So;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN)PlaySoundA("cymbal.wav",NULL,SND_ASYNC);
}
void keyboard(unsigned char key,int x,int y)
{
    if(key=='a'||key=='A')Do.Play(); ///PlaySoundA("do.wav",NULL,SND_ASYNC);
    if(key=='s'||key=='S')Re.Play(); ///PlaySoundA("re.wav",NULL,SND_ASYNC);
    if(key=='d'||key=='D')Mi.Play(); ///PlaySoundA("mi.wav",NULL,SND_ASYNC);
    if(key=='g'||key=='G')Fa.Play(); ///PlaySoundA("fa.wav",NULL,SND_ASYNC);
    if(key=='h'||key=='H')So.Play(); ///PlaySoundA("so.wav",NULL,SND_ASYNC);

}
int main(int argc,char**argv)
{
  
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("sound");
    Do.Load("do.wav");Re.Load("re.wav");Mi.Load("mi.wav");Fa.Load("fa.wav");So.Load("so.wav");
    glutMouseFunc(mouse);

    glutKeyboardFunc(keyboard);
    glutDisplayFunc(display);
    glutMainLoop();
}






沒有留言:

張貼留言