2019年5月24日 星期五

PJ週記 - Week14

(一)用GLUT播放音效加上Timer


1.先開個新GLUT專案



複製lib裡面的freeglut.a>>複製貼上改成libglut32.a










把freeglut資料夾丟桌面 丟桌面 丟桌面

2.去Google搜尋WAV檔的音效,盡量越短越好

下載完之後,把音效存在桌面>freeglut>bin裡面




.在CodeBlocks打上

#include <GL/glut.h>
#include <mmsystem.h>///NOW (0)發聲音
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSwapBuffers();   ///畫圖形,但這裡暫且不用畫圖形,播音效就好
}
void timer(int t)///NOW (2)
{
    glutTimerFunc(1000, timer, 0);///NOW2
    PlaySoundA("ribbit.wav", NULL, SND_ASYNC);///NOW (2)  ///音效檔名
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500);///大一點
    glutCreateWindow("week14 timer");

    glutDisplayFunc(display);
    glutTimerFunc(1000, timer, 0);///NOW (1)  ///音效的timer,1000=1秒鐘

    glutMainLoop();
}


(二)用Timer每秒轉圖形30度


#include <GL/glut.h>
#include <mmsystem.h>///NOW (0)發聲音
#include <stdio.h>///NOW3 for printf()
float angle=0;///NOW4
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///NOW4
        glRotatef(angle, 0, 0, 1);///NOW4
        glutSolidTeapot( 0.3 );///NOW4
    glPopMatrix();///NOW4
    glutSwapBuffers();
}
void timer(int t)///NOW (2)
{
    glutTimerFunc(30, timer, t+1);///NOW4 ///NOW3 一起床,馬上撥下一個鬧鐘, 時間才會準
    printf("現在的 timer(t)的t是: %d\n", t);///NOW3
    angle = t;///NOW4
    glutPostRedisplay();///NOW4 要更新畫面
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500);///大一點
    glutCreateWindow("week14 timer");

    glutDisplayFunc(display);
    glutTimerFunc(1000, timer, 0);///NOW (1)

    glutMainLoop();
}






(三)利用內差公式讓茶壺跑起來


alpha:alpha*(NewX)+(1-alpha)*(OldX)   ///x為座標


























沒有留言:

張貼留言