2018年5月25日 星期五

Week12 邱顯傑

首先先複習上裡面的讀取音樂(NOW:1)


 先用紅框的程式碼,去做使用,讓我們的音樂能撥放
忘記擺設的話,可以回去上週的截圖中

接下來我們需要會使用MP3讀取(NOW:2)


外掛就在moodle上的CMP3 MCI.h把它放入專案黨上面就可以了,接下來就在這裡呼叫

接下來就是學習計時器應用(NOW:3)


紅框中  就是他們需要的   記得,這些在聲音計時有幫助

最後呢 就是使用內插法,把圖形去做規律旋轉(NOW:4)





原程式碼與註解在底下

#include <GL/glut.h>
#include <stdlib.h>
#include <windows.h>///NOW:1
#include <mmsystem.h>///NOW:1
#include "CMP3_MCI.h"///MP3的外掛  NOW:2
#include <stdio.h>
CMP3_MCI myMP3; ///宣告一個變數放置mp3 NOW:2
float angle=0, oldangle=0, newangle=90;///角度、舊角度、新角度   NOW:4
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle,0,0,1);   ///照著角度去旋轉   NOW:4
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}

void timer(int t){
    glutTimerFunc(1000, timer, t+1);      ///要等多久, 要呼叫誰?, 參數   NOW:3
    printf("Now t is : %d\n",t);          ///看看已經經過幾秒了    NOW:3.5
    ///PlaySound("Do.wav", NULL, SND_ASYNC);    ///NOW:3
    float alpha= (t)/30.0;                ///先算出一個內插的alpha值    NOW:4
    angle = newangle * alpha + oldangle * (1-alpha);///把角度去做內插    NOW:4
    glutPostRedisplay();                  ///重新畫圖   NOW:4
}
int main(int argc, char *argv[])
{
    ///PlaySound("Do.wav",NULL,SND_ASYNC |SND_LOOP);///SND_LOOP會讓Do一直重複撥放 NOW:1
    ///myMP3.Load("listen.mp3");///讀入MP3檔案 NOW:2
    ///myMP3.Play();///撥放MP3

    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("GLUT Shapes");

    glutTimerFunc(5000, timer, 0);     ///有一個計時器的函數timer  NOW:3
    glutDisplayFunc(display);
    glutMainLoop();


}










沒有留言:

張貼留言