2019年5月24日 星期五

week14

1.新增一個新的project

2.到http://billor.chsh.chc.edu.tw/sound/p.htm下載音檔,並放入bin資料夾裡

3.複製程式碼並執行

4.更改程式碼並執行
#include <GL/glut.h>
#include <mmsystem.h>///NOW (0)發聲音
#include <stdio.h>///NOW3 for printf()
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSwapBuffers();
}
void timer(int t)///NOW (2)
{
    glutTimerFunc(1000, timer, t+1);///NOW3 一起床,馬上撥下一個鬧鐘, 時間才會準
    printf("現在的 timer(t)的t是: %d\n", t);///NOW3

    PlaySoundA("fart.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)

    glutMainLoop();
}


5.更改程式碼並執行
#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();
}


6.內插公式

7.更改程式碼並執行
#include <GL/glut.h>
#include <mmsystem.h>///NOW (0)發聲音
#include <stdio.h>///NOW3 for printf()
float angle=0;///NOW4
float nowX=0;///NOW5
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///NOW4
        ///glRotatef(angle, 0, 0, 1);///NOW4
        glTranslatef(nowX, 0, 0);///NOW5
        glutSolidTeapot( 0.3 );///NOW4
    glPopMatrix();///NOW4
    glutSwapBuffers();
}
void timer(int t)///NOW (2)
{/// 1000 ms = 1秒,   33ms = 0.033秒 => 33*30=1000,  30fps
    glutTimerFunc(33, timer, t+1);///NOW4 ///NOW3 一起床,馬上撥下一個鬧鐘, 時間才會準
    printf("現在的 timer(t)的t是: %d\n", t);///NOW3
    float alpha = (t%30) / 30.0;///變成 alpha: 0.0 ~ 1.0  ///NOW5
    nowX = alpha*1.0 + (1-alpha)* -1.0;///NOW5

    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();
}


8.



沒有留言:

張貼留言