2018年5月18日 星期五

Week12_黃偉愷

播放 MP3 檔

1. 先從 moodle 下載 CMP3_MCI.h

2. 將 CMP3_MCI.h 複製到我們的專案資料夾內

3. 將 mp3 檔放在我們的工作目錄裡

code:
#include "CMP3_MCI.h" // MP3 的外掛
CMP3_MCI mymp3; //宣告(物件)變數
int main(int argc, char *argv[])
{
    //PlaySound("Do.wav",NULL,SND_ASYNC | SND_LOOP);
    mymp3.Load("Spring.mp3"); //讀MP3
    mymp3.Play();// 播放

計時器

1. glutTimerFunc(1000,timer,t+1); //第一個參數為幾毫秒,第二個為呼叫哪個函式,第三個為參數

2. 記得要放在 glutCreateWindow("GLUT Shapes"); 之後

code:

void timer(int t)
{
    glutTimerFunc(1000,timer,t+1); //等多久、呼叫誰、參數
    PlaySound("Do.wav",NULL,SND_ASYNC);
}
int main(int argc, char *argv[])
{
    //PlaySound("Do.wav",NULL,SND_ASYNC | SND_LOOP);
    //mymp3.Load("Spring.mp3"); //讀MP3
   // mymp3.Play();// 播放
    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitWindowPosition(10,10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("GLUT Shapes");


    glutTimerFunc(5000,timer,0);

利用線性內差讓茶壺每隔一段時間就轉動

code:
#include<GL/glut.h>
#include<stdio.h>
float angle = 0, oldAngle=0, newAngle=90;//  角度,就角度,新角度
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle,0,0,1); ///會照角度去旋轉
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void timer(int t)
{
    glutTimerFunc(1000,timer,t+1);//等多久,呼叫誰,參數
    float alpha = (t)/30.0;// 算出一個內插的alpha值
    angle = newAngle*alpha+oldAngle*(1-alpha);//角度去內插
    glutPostRedisplay();//照著上面的角度重畫
}
int main(int argc, char *argv[])
{
    //PlaySound("Do.wav",NULL,SND_ASYNC | SND_LOOP);
    //mymp3.Load("Spring.mp3"); //讀MP3
   // mymp3.Play();// 播放
    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("GLUT Shapes");

    glutTimerFunc(0,timer,0);//有個計時器 timer
    glutDisplayFunc(display);
    glutMainLoop();
}







沒有留言:

張貼留言