主題1:播放 MP3 檔
第一步 從 moodle 上下載 CMP3_MCI.h
第二步 將 CMP3_MCI.h 複製到我們的專案資料夾內
第三步 將 mp3 檔放在我們的工作目錄裡
備註:程式碼
#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();// 播放
主題2:計時器
第一步 glutTimerFunc(1000,timer,t+1); //第一個為幾毫秒,第二個為呼叫哪個函式,第三個為參數
第二步 記得要放在 glutCreateWindow("GLUT Shapes"); 之後
第二步 記得要放在 glutCreateWindow("GLUT Shapes"); 之後
備註:程式碼
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);
{
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);
主題3:利用線性內差讓茶壺每隔一段時間就轉動
備註:程式碼
#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();
}
沒有留言:
張貼留言