2021年4月28日 星期三

Xian筆記-Week10

Week10

(1) 主題: 聲音(音效、音樂)
(2) 實作: 播放聲音
(3) 實作: CMP3_MCI.h 物件
(4) 複習教過的內容 (下週教 3D 模型)

(5) 補充檔如何搬家!!!

1.放聲音~





#include <windows.h> int main() {///播放聲音("檔名.wav",空指標, 要等待同步) ///檔案要放在 (in C:\Users\Administrator\Desktop\freeglut\bin) 目標路徑 PlaySound("do.wav", NULL, SND_SYNC); PlaySound("re.wav", NULL, SND_SYNC); PlaySound("mi.wav", NULL, SND_SYNC); PlaySound("fa.wav", NULL, SND_SYNC); PlaySound("so.wav", NULL, SND_SYNC); }///太慢了..... 每個wav檔長度: 5秒


























2.DO~RE~MI~




#include <windows.h> #include <stdio.h> int main() {///播放聲音("檔名.wav",空指標, 等待同步) ///檔案要放在 (in C:\Users\Administrator\Desktop\freeglut\bin) 目標路徑 while(1){ char c = getchar(); if (c=='1') PlaySound("do.wav", NULL, SND_ASYNC); if (c=='2') PlaySound("re.wav", NULL, SND_ASYNC); if (c=='3') PlaySound("mi.wav", NULL, SND_ASYNC); if (c=='4') PlaySound("fa.wav", NULL, SND_ASYNC); if (c=='5') PlaySound("so.wav", NULL, SND_ASYNC); } /// 需要按"ENTER"鍵 }

























































3.進階DO~RE~MI~



不需要按ENTER了!!




#include <windows.h> #include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } void keyboard( unsigned char key, int x, int y)///TODO3 {///TODO3 if( key== '1' ) PlaySound("do.wav", NULL , SND_ASYNC );///TODO3 if( key== '2' ) PlaySound("re.wav", NULL , SND_ASYNC );///TODO3 if( key== '3' ) PlaySound("mi.wav", NULL , SND_ASYNC );///TODO3 } ///不需要按ENTER了!! int main(int argc, char** argv) { glutInit( &argc, argv ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH ); glutCreateWindow("Week10 Sound 07361092"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); ///TODO3 glutMainLoop(); }



























4.人家寫的程式(可以放MP3當背景音樂了!!)






5.放MP3~還可以DOREMI~






#include <windows.h> #include <GL/glut.h> #include "CMP3_MCI.h" ///TODO5: .h檔案要放在專案目錄 week10_sound CMP3_MCI mp3; ///TODO5: 宣告一個變數 (MP3的變數) void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } void keyboard( unsigned char key, int x, int y)///TODO3 {///TODO3 if( key== '1' ) PlaySound("do.wav", NULL , SND_ASYNC );///TODO3 if( key== '2' ) PlaySound("re.wav", NULL , SND_ASYNC );///TODO3 if( key== '3' ) PlaySound("mi.wav", NULL , SND_ASYNC );///TODO3 if( key== '4' ) PlaySound("fa.wav", NULL , SND_ASYNC );///TODO3 if( key== '5' ) PlaySound("so.wav", NULL , SND_ASYNC );///TODO3 } int main(int argc, char** argv) { mp3.Load("music.mp3"); ///TODO5: 檔案放執行目錄...\freeglut\bin mp3.Play(); ///TODO5 :播放 glutInit( &argc, argv ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH ); glutCreateWindow("Week10 Sound 07361092"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); ///TODO3 glutMainLoop(); }

































6.背景放MP3~鍵盤可以DOREMI~滑鼠還可以放音效~




#include <windows.h> #include <GL/glut.h> #include "CMP3_MCI.h" ///TODO5: .h檔案要放在專案目錄 week10_sound CMP3_MCI mp3; ///TODO5: 宣告一個變數 (MP3的變數) void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } void keyboard( unsigned char key, int x, int y) { if( key== '1' ) PlaySound("do.wav", NULL , SND_ASYNC ); if( key== '2' ) PlaySound("re.wav", NULL , SND_ASYNC ); if( key== '3' ) PlaySound("mi.wav", NULL , SND_ASYNC ); if( key== '4' ) PlaySound("fa.wav", NULL , SND_ASYNC ); if( key== '5' ) PlaySound("so.wav", NULL , SND_ASYNC ); }
void mouse( int button, int state, int x, int y)///TODO6 {///TODO6 if( state==GLUT_DOWN ) PlaySound("shot.wav", NULL , SND_ASYNC );///TODO6 }
int main(int argc, char** argv) { mp3.Load("music.mp3"); ///TODO5: 檔案放執行目錄...\freeglut\bin mp3.Play(); ///TODO5 :播放 glutInit( &argc, argv ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH ); glutCreateWindow("Week10 Sound 07361092"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMouseFunc(mouse);///TODO6 glutMainLoop(); }




































7.背景放MP3~鍵盤可以DOREMI~滑鼠還可以放多重音效~




#include <windows.h> #include <GL/glut.h> #include "CMP3_MCI.h" ///TODO5: .h檔案要放在專案目錄 week10_sound CMP3_MCI mp3; ///TODO5: 宣告一個變數 (MP3的變數) CMP3_MCI shot1,shot2,shot3; ///TODO7 void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidTeapot(0.3); glutSwapBuffers(); } void keyboard( unsigned char key, int x, int y) { if( key== '1' ) PlaySound("do.wav", NULL , SND_ASYNC ); if( key== '2' ) PlaySound("re.wav", NULL , SND_ASYNC ); if( key== '3' ) PlaySound("mi.wav", NULL , SND_ASYNC ); if( key== '4' ) PlaySound("fa.wav", NULL , SND_ASYNC ); if( key== '5' ) PlaySound("so.wav", NULL , SND_ASYNC ); } void mouse( int button, int state, int x, int y)///TODO6 {///TODO6 if( state==GLUT_DOWN && button==GLUT_LEFT_BUTTON ) shot1.Play();///TODO7 if( state==GLUT_DOWN && button==GLUT_MIDDLE_BUTTON ) shot2.Play();///TODO7 if( state==GLUT_DOWN && button==GLUT_RIGHT_BUTTON ) shot3.Play();///TODO7 } int main(int argc, char** argv) { shot1.Load("1.wav"); shot2.Load("2.wav"); shot3.Load("3.wav"); ///TODO7 mp3.Load("music.mp3"); ///TODO5: 檔案放執行目錄...\freeglut\bin mp3.Play(); ///TODO5 :播放 glutInit( &argc, argv ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH ); glutCreateWindow("Week10 Sound 07361092"); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutMouseFunc(mouse);///TODO6 glutMainLoop(); }












































--------------------------------------

檔案搬家!!!

把專案檔.cbp 開啟 ,依照圖片操作,把檔案目錄改成 "."
並且把freeglut內的.dll檔,完整複製到你的專案檔裡面~
























沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...